У меня странная ошибка в моем коде.Я пытаюсь прочитать некоторые символы из 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()
предназначен только дляцель отладки.
Я пытаюсь прочитать InputStream
, у которого есть 147 781 символ.Сначала два раза в то время как цикл все в порядке, я читаю символы в буфер, а затем он добавляется к webResource (StringBuilder)
.
Но на третьей итерации я читаю в буфер 4096 символов, но к webResource (StringBuilder)
добавляется только 1446 символов.
Я отлаживал код в Eclipse, и во время просмотра переменной webResource
я обнаружил, что после третьей итерации (после добавления 1446 символов) содержимое переменной просто заканчивается на "..." и нетновые персонажи добавляются в следующих итерациях.
Странно также то, что webResource.count
запускается правильно (после четырех целых чисел его значение равно 16 384 и т. Д.).
Просьба может кто-нибудь помочь?Я действительно не понимаю, в чем проблема того, почему я не могу добавить целые inputstream
к StringBuilder
, я могу добавить только первые 9 638 символов.
Заранее спасибо.