2015-09-21 5 views
0

Я не уверен, что ответ на этот вопрос:Does BufferedInputStream немедленно заполняет буфер, даже перед первым чтением?

Если я обернуть BufferedInputStream вокруг InputStream приходя от, например, HTTP вызов -does в BufferedInputStream автоматически и немедленно заполняет буфер данных из InputStream (на «wrapping» -time?), или мне нужно сначала вызвать read() в BufferedInputStream, прежде чем буфер заполнится? Короче говоря: когда буфер заполняется первым?

Я спрашиваю, потому что, если у меня есть http-вызов, я бы хотел иметь возможность быстро хранить содержимое небольших текстовых файлов в ОЗУ (где они безопаснее), чем полагаться на соединение, которое все еще должно быть при чтении на самом деле начинается ...

Будет ли IOException с BufferedInputStream, если базовое соединение TCP будет закрыто, даже если буферу удалось заполнить все данные, которые были действительно запрошены?

ответ

1

При создании BufferedInputStream создается внутренний буферный массив. Поскольку байты из потока считываются или пропускаются, внутренний буфер пополняется по мере необходимости из содержащегося входного потока, по одному байту за один раз. До вас read, он должен быть пустым.

+0

Вы уверены в этом? – JohnyTex

+1

Вы можете изучить его в отладчике. Это мое понимание. Но я не подвергаю себя ответственности за ваше приложение для мониторинга сердца ... –

 Смежные вопросы

  • Нет связанных вопросов^_^