目前,我正在尝试从内容长度为 37743 的响应中读取一个不太短的流。我正在使用 read(char[] buffer, int offset, int length),但在比较时并非所有流都被读取它到我正在阅读的原始 json 文件。我尝试检查这是否是一个常见问题,但我找不到任何原因导致此问题:
- 字符串生成器的最大长度?
- char[] 的最大长度?
- 缓冲区长度? (目前8192)
- while 条件不正确? (以下片段)
while ((reader.read(buffer, 0, buffer.length)) != -1)
sb.append(String.valueOf(buffer)); //sb is the String builder
请注意,当缓冲区长度更改时,结果会再次更改,例如当更改为 1024 时,获得了与 8192 缓冲区相同的结果,但又多了一段与原始 json 字符串不一致的文本。
最佳答案
您永远不应该忽略 Reader.read()
的结果。如果到达流末尾,则返回 -1。如果没有,则返回已读取的字符数。假设它准确读取您要求它读取的字符数是错误的。
更改为
while ((read = reader.read(buffer, 0, buffer.length)) != -1) {
sb.append(buffer, 0, read);
}
关于java - BufferedReader java未到达文件末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14129523/