Тот же цикл дает разные результаты. Java IO - PullRequest
0 голосов
/ 24 марта 2010

Я сталкиваюсь с очень странной проблемой, когда один и тот же цикл продолжает давать мне разные выходные данные при изменении значения BUFFER

  final int BUFFER = 100;
        char[] charArr = new char[BUFFER];
        StringBuffer objStringBuffer = new StringBuffer();
        while (objBufferedReader.read(charArr, 0,BUFFER) != -1) {
            objStringBuffer.append(charArr);
        }
 objFileWriter.write(objStringBuffer.toString());

Когда я изменяю размер BUFFER на 500, он дает мне файл 7 КБкогда я изменяю размер буфера на 100000, он дает файл размером 400 кб, где содержимое повторяется снова и снова.Пожалуйста помоги.Что я должен сделать, чтобы предотвратить это?

1 Ответ

6 голосов
/ 24 марта 2010

Вы должны запомнить возвращаемое значение вызова read(), потому что read не не гарантирует, что весь буфер был заполнен.

Вам нужно будет запомнить это значение и использовать его в вызове добавления, чтобы добавить только столько символов.

В противном случае вы добавите неинициализированные символы в StringBuffer, которые на самом деле не были получены из Reader (возможно, либо 0, либо значений, записанных предыдущими вызовами read()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...