1.通过BufferedReader方式读取
fun getAssetsFile(fileName: String, context: Context): String {
//将json数据变成字符串
val stringBuilder = StringBuilder()
try {
//获取assets资源管理器
val assetManager = context.assets
//通过管理器打开文件并读取
val bf = BufferedReader(InputStreamReader(
assetManager.open(fileName)))
while (true) {
val readLine = bf.readLine()
if (readLine != null) {
stringBuilder.append(readLine)
}
}
bf.close()
} catch (e: IOException) {
e.printStackTrace()
}
return stringBuilder.toString()
}
2.通过inputStream循环方式读取
fun getAssetsFile(fileName: String, context: Context): String {
val stringBuilder = StringBuilder()
try {
val assetManager = context.assets
var inputStream = assetManager.open(fileName)
val bytes = ByteArray(1024)
while (true) {
val temp = inputStream.read(bytes)
if (temp == -1) {
break
}
val length = String(bytes, 0, temp)
stringBuilder.append(length)
}
inputStream.close()
} catch (e: Exception) {
e.printStackTrace()
}
return stringBuilder.toString()
}
3.通过InputStream.available()方式读取
fun getAssetsFile(fileName: String, context: Context): String {
val stringBuilder = StringBuilder()
var inputStream: InputStream? = null
try {
val assetManager = context.assets
inputStream = assetManager.open(fileName)
val available = inputStream.available()
val bytes = ByteArray(available)
if (inputStream.read(bytes) > 0) {
val result = String(bytes)
stringBuilder.append(result)
}
} catch (e: Exception) {
e.printStackTrace()
}finally {
if (inputStream != null) {
inputStream.close()
}
}
return stringBuilder.toString()
}
调用即可
JsonUtil.getAssetsFile("offline.json",mActivity)