2012-02-15 14 views
1

私のコードに奇妙なエラーがあります。私は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など)。

誰も助けることができますか?私は実際にinputstreamStringBuilderに追加できない理由がどこにないのかわかりません。最初の9文字を638文字しか追加できません。

ありがとうございます。

+0

ここで何がうまくいかないのかは分かりません。私たちがテストするために、 'InputStream'のソースとともに[SSCCE](http://sscce.org)を投稿してみてください。 – Jeffrey

+0

補足として、単に「IOUtils.toString() '」(http://commons.apache.org/io/api-2.0/org/apache/commons/io/IOUtils.html#toString (java.io.InputStream、%20java.lang.String))? –

答えて

2

デバッガに表示されている内容を誤解しているようです。長すぎるため、デバッガはstringbuilderの全内容を表示していません。しかしそれはすべてです。

関連する問題