我的代碼中有一個奇怪的錯誤。我試圖用char buffer從InputStreamReader
中讀取一些字符,並將其附加到StringBuilder
。Java StringBuilder不會追加整個InputStream
該片段是在這裏:
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()
僅用於調試的目的。
我試圖閱讀InputStream
有147 781個字符。 while循環中的前兩個是一切正常,我將字符讀入緩衝區,然後將其附加到webResource (StringBuilder)
。
但在第三次迭代時,我讀取緩衝4096個字符,但只有1446個字符被附加到webResource (StringBuilder)
。
我一直在Eclipse中調試代碼,並在觀看變量webResource
時發現,在第三次迭代(追加1446個字符後)後,變量的內容僅以「...」結尾,並且沒有添加新字符在下一次迭代中。奇怪的事情也是,webResource.count
正在加入正確(在四次intections後它的值是16 384,等等)。
請問誰能幫忙?我真的不知道爲什麼我不能將整個inputstream
添加到StringBuilder
的問題在哪裏,我只能追加前9 638個字符。
在此先感謝。
很難說這裏有什麼問題。嘗試發佈一個[SSCCE](http://sscce.org)與'InputStream'來源供我們測試。 – Jeffrey 2012-02-15 23:01:29
請注意,爲什麼不使用:[''IOUtils.toString()'](http://commons.apache.org/io/api-2.0/org/apache/commons/io/IOUtils.html#toString (java.io.InputStream中,%20java.lang.String))? – 2012-02-15 23:02:16