Как кэшировать InputStream для многократного использования

У меня есть InputStream файла, и я использую компоненты Apache Poi для чтения из него, как это:

POIFSFileSystem fileSystem = new POIFSFileSystem(inputStream);

Проблема в том, что мне нужно использовать один и тот же поток несколько раз, и POIFSFileSystem закрывает поток после использования.

Каков наилучший способ кеширования данных из входного потока и последующего предоставления большего количества входных потоков в другую POIFSFileSystem?

РЕДАКТИРОВАТЬ 1:

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

РЕДАКТИРОВАТЬ 2:

Извините, что снова открыл вопрос, но условия несколько отличаются при работе внутри рабочего стола и веб-приложения. Прежде всего, InputStream, который я получаю из org.apache.commons.fileupload.FileItem в моем веб-приложении tomcat, не поддерживает маркировку, поэтому не может быть сброшен.

Во-вторых, я хотел бы иметь возможность хранить файл в памяти для более быстрого доступа и уменьшения проблем при работе с файлами.

Ответы на вопрос(6)

Ваш ответ на вопрос