Как кэшировать InputStream для многократного использования
У меня есть InputStream файла, и я использую компоненты Apache Poi для чтения из него, как это:
POIFSFileSystem fileSystem = new POIFSFileSystem(inputStream);
Проблема в том, что мне нужно использовать один и тот же поток несколько раз, и POIFSFileSystem закрывает поток после использования.
Каков наилучший способ кеширования данных из входного потока и последующего предоставления большего количества входных потоков в другую POIFSFileSystem?
РЕДАКТИРОВАТЬ 1:
Под кешем я подразумевал хранилище для последующего использования, а не для ускорения работы приложения. Также лучше просто считать входной поток в массив или строку, а затем создавать входные потоки для каждого использования?
РЕДАКТИРОВАТЬ 2:
Извините, что снова открыл вопрос, но условия несколько отличаются при работе внутри рабочего стола и веб-приложения. Прежде всего, InputStream, который я получаю из org.apache.commons.fileupload.FileItem в моем веб-приложении tomcat, не поддерживает маркировку, поэтому не может быть сброшен.
Во-вторых, я хотел бы иметь возможность хранить файл в памяти для более быстрого доступа и уменьшения проблем при работе с файлами.