私のコードに奇妙なエラーがあります。私は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()
は、デバッグ目的のためです。
私は、147 781の文字を持つInputStream
を読もうとしています。私はバッファに文字を読み込んだ後、webResource (StringBuilder)
に追加されます。
しかし、3回目の繰り返しでは、4096文字をバッファに読み込みましたが、webResource (StringBuilder)
には1446文字しか追加されません。
私はEclipseでコードをデバッグしていましたが、変数webResource
を見ている間に、3回目の繰り返し(1446文字の追加後)の後、変数の内容は単に "..."で終わり、新しい文字は追加されません次の反復で。
奇妙なことも、そのwebResource.count
が正しくインセメントされています(4回のインターラクションの後に値が16 384など)。
誰も助けることができますか?私は実際にinputstream
をStringBuilder
に追加できない理由がどこにないのかわかりません。最初の9文字を638文字しか追加できません。
ありがとうございます。
ここで何がうまくいかないのかは分かりません。私たちがテストするために、 'InputStream'のソースとともに[SSCCE](http://sscce.org)を投稿してみてください。 – Jeffrey
補足として、単に「IOUtils.toString() '」(http://commons.apache.org/io/api-2.0/org/apache/commons/io/IOUtils.html#toString (java.io.InputStream、%20java.lang.String))? –