私はファイルのInputStreamを持っており、次のようにapachepoiコンポーネントを使用してファイルから読み取ります。
POIFSFileSystem fileSystem = new POIFSFileSystem(inputStream);
問題は、同じストリームを複数回使用する必要があり、POIFSFileSystemが使用後にストリームを閉じることです。
入力ストリームからデータをキャッシュしてから、さまざまなPOIFSFileSystemにさらに多くの入力ストリームを提供するための最良の方法は何ですか?
編集1:
キャッシュとは、アプリケーションを高速化する方法としてではなく、後で使用するために保存することを意味しました。また、入力ストリームを配列または文字列に読み込んでから、使用するたびに入力ストリームを作成する方がよいでしょうか。
編集2:
質問を再度開いて申し訳ありませんが、デスクトップとWebアプリケーション内で作業する場合の条件は多少異なります。まず、Tomcat Webアプリのorg.apache.commons.fileupload.FileItemから取得したInputStreamはマーキングをサポートしていないため、リセットできません。
次に、ファイルをメモリに保持して、アクセスを高速化し、ファイルを処理する際のioの問題を減らしたいと考えています。