При использовании BufferedInputStream убедитесь, что inputStream еще не буферизован, двойная буферизация вызовет некоторые серьезные проблемы с обнаружением ошибок.
Также вам нужно по-разному обрабатывать Reader, преобразование в StreamReader и буферизацию приведет к потере байтов, если Reader будет буферизован.
Также, если вы используете Reader, помните, что вы читаете не байты, а символы в кодировке по умолчанию (если не была задана явная кодировка).
Пример буферизованного входного потока, который вы, возможно, не знаете, - URL-адрес URL; url.openStream (); * * тысяча одна
У меня нет ссылок на эту информацию, это происходит из кода отладки.
Основной случай, когда проблема возникла для меня, был в коде, который читал из файла в сжатый поток.
Если я правильно помню, как только вы начнете отлаживать код, в исходном коде Java есть комментарии о том, что некоторые вещи работают не всегда корректно.
Я не помню, откуда информация от использования BufferedReader и BufferedInputStream
исходит из, но я думаю, что это не сразу, даже на самом простом тесте.
Не забудьте проверить это, вам нужно пометить больше, чем размер буфера (который отличается для BufferedReader и BufferedInputStream), проблемы возникают, когда считываемые байты достигают конца буфера.
Обратите внимание, что есть размер буфера исходного кода, который может отличаться от размера буфера, который вы установили в конструкторе.
Прошло некоторое время с тех пор, как я это сделал, поэтому мои воспоминания о деталях могут быть немного не в порядке.
Тестирование было выполнено с использованием FilterReader / FilterInputStream, добавьте один в прямой поток и один в буферный поток, чтобы увидеть разницу.