Java StringBuilder не добавляет весь InputStream - PullRequest
1 голос
/ 16 февраля 2012

У меня странная ошибка в моем коде.Я пытаюсь прочитать некоторые символы из 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 символов.

Заранее спасибо.

1 Ответ

2 голосов
/ 16 февраля 2012

Вы, похоже, неправильно истолковываете то, что видите в отладчике. Отладчик не показывает весь контент строителя строк, потому что он слишком длинный. но это все там.,

...