我的代码中有一个奇怪的错误。我正在尝试使用char缓冲区从InputStreamReader
读取一些字符并将其附加到StringBuilder
。
摘录在这里:
char[] buffer = new char[4096];
int numRead = 0;
webResource = new StringBuilder("");
while ( (numRead = reader.read(buffer, 0, 4096)) != -1 )
{
System.out.println("Capacity before: "+webResource.capacity());
webResource.append(buffer, 0, numRead);
System.out.println("Capacity after: "+webResource.capacity());
}
System.out.println()
仅用于调试目的。
我正在尝试阅读包含147 781个字符的InputStream
。在循环中前两次是一切正常,我将字符读入缓冲区然后将其附加到webResource (StringBuilder)
。
但在第三次迭代中,我读取缓冲4096个字符,但只有1446个字符附加到webResource (StringBuilder)
。
我一直在调试Eclipse中的代码,同时看着变量webResource
我发现,在第三次迭代之后(在追加1446个字符之后),变量的内容只是以“......”结尾而没有新的在下一次迭代中添加字符。
奇怪的是,webResource.count
正在进行正确处理(在四次交互之后其值为16 384,依此类推)。
请求有人帮忙吗?我真的不知道为什么我不能将整个inputstream
附加到StringBuilder
的问题在哪里,我只能附加前9个638个字符。
提前致谢。
答案 0 :(得分:2)
您似乎误解了您在调试器中看到的内容。调试器没有向您显示stringbuilder的全部内容,因为它太长了。但它就在那里。,