Java StringBuilder不会附加整个InputStream

时间:2012-02-15 22:59:17

标签: java eclipse stringbuilder

我的代码中有一个奇怪的错误。我正在尝试使用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个字符。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您似乎误解了您在调试器中看到的内容。调试器没有向您显示stringbuilder的全部内容,因为它太长了。但它就在那里。,