gpt4 book ai didi

java - BufferedReader java未到达文件末尾

转载 作者:行者123 更新时间:2023-12-01 06:33:00 25 4
gpt4 key购买 nike

目前,我正在尝试从内容长度为 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/

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