gpt4 book ai didi

android - bufferedReader() 在 Kotlin 中究竟是如何工作的?

转载 作者:IT老高 更新时间:2023-10-28 13:47:17 24 4
gpt4 key购买 nike

所以我正在尝试从我的 Android 项目中的 .json 文件中读取数据:

val file = context.assets.open("myfile.json").bufferedReader().readText()

这工作正常并成功地将我的 .json 文件打印为一个 String

但是我想知道 bufferedReader() 到底是什么以及为什么 .readText() 不能在打开的 .json 文件。

PS:readText() 返回一个 String。然而:

val json2: JSONObject = JSONObject("mystring") 返回:

Caused by: org.json.JSONException: Value mystring of type java.lang.String cannot be converted to JSONObject

这有什么意义?

最佳答案

readText 函数被定义为 Reader 上的扩展:

public fun Reader.readText(): String {
val buffer = StringWriter()
copyTo(buffer)
return buffer.toString()
}

一个InputStream不是一个Reader,所以你必须把它转换成一些Reader:

public inline fun InputStream.reader(charset: Charset = Charsets.UTF_8): InputStreamReader = 
InputStreamReader(this, charset)

您可以将阅读器用作缓冲阅读器,并带有替代的 bufferedReader 功能:

public inline fun InputStream.bufferedReader(charset: Charset = Charsets.UTF_8): BufferedReader = 
reader(charset).buffered()

Reader 以及 BufferedReader是 Java 标准库的一部分,缓冲版本的描述如下:

Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.

In general, each read request made of a Reader causes a corresponding read request to be made of the underlying character or byte stream. It is therefore advisable to wrap a BufferedReader around any Reader whose read() operations may be costly, such as FileReaders and InputStreamReaders...

它基本上包装了一个 Reader 并添加了对读取单行等的支持。

关于android - bufferedReader() 在 Kotlin 中究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55510968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com