BufferedReader java没有到达文件的末尾



目前我正试图从内容长度37743的响应中读取一个不那么短的流。我正在使用read(char[]缓冲区,int偏移量,int长度),但在将其与我正在读取的原始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);
}

您应该使用:

public StringBuilder append(char[] str,
                        int offset,
                        int len)

, offset为0,len为reader.read

的返回值
int len = 0;
while ((len = reader.read(buffer,0,buffer.length))!=-1) {
    sb.append(buffer,0,len);
}

相关内容

  • 没有找到相关文章