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