当我从资源中的 .json 文件加载一些模拟数据时,有时返回的数据已损坏并显示 �������������������� 符号。但实际数据没有这些符号。我尝试加载的代码低于为什么会发生这种情况?谢谢
fun loadJSONFromAsset(fileName: String): String? {
val json: String
try {
val `is` = javaClass.classLoader.getResourceAsStream(fileName)
val size = `is`.available()
val buffer = ByteArray(size)
`is`.read(buffer)
`is`.close()
json = String(buffer, Charset.defaultCharset())
} catch (ex: IOException) {
ex.printStackTrace()
return null
}
return json
}
最佳答案
未自行压缩的文件将在放入 Assets 文件夹时进行压缩。您必须使用 AssetManager 打开文件
val jsonString = context
.assets
.open("myfile.json")
.bufferedReader()
.readText()
或在构建时禁用 .json
文件的压缩。
android {
aaptOptions {
noCompress 'json'
}
}
此外,我认为您没有充分的理由使用 classLoader.getResourceAsStream(fileName)
打开 apk 中 bundle 的文件,在 Android 上您可以使用 AssetManager
或 资源
。我刚找到这个interesting article ,它表明使用 getResourceAsStream 也可能非常慢。
关于android - 从文件加载时格式错误的 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774571/