Кэш BufferedInputStream? Wise?

Я строю что-то, связанное с кешами, и хочу понять, разумно ли кешировать BufferedInputStream, пока я закрываю базовый InputStream.

В моем случае я работаю над кэшированием веб-вызовов (я знаю, что мы кешируем в HTTP и хорошо знаем, как это сделать), поэтому объекты разбираются на множество разных типов, я читаю InputStream и анализирую его в соответствующий тип, и, как я понимаю, BufferedInputStream будет хранить все байты в нем. Я не вижу ничего плохого в кешировании, сбросе и восстановлении!

Нужно знать от кого-то опытного! Спасибо!

1 ответ

Решение

Он будет работать только в том случае, если исходный входной поток содержит меньше данных, чем размер буфера вашего BufferedInputStream, по умолчанию должно быть 8 КБ.

Также не стоит полагаться на это, он не предназначен для повторного использования, буфер был только для того, чтобы избежать слишком большого числа чтений в небольшом размере. Из-за своей цели вы не можете гарантировать, что реализация сделает то, что вы хотите, она теоретически получит доступ к базовому потоку в любое время.

Хотя вы можете зайти в исходный код, чтобы подтвердить поведение, если вы готовы сделать это, почему бы не клонировать и не создать свой собственный CachedInputStream?

Другие вопросы по тегам