0

InputStreamをパラメーターとしてサードパーティライブラリに渡す必要があります。サードパーティライブラリは、InputStreamから完全なコンテンツを読み取り、そのジョブを実行します。

私の問題は、私のファイルのいくつかがZipファイルであり、複数のZipEntryが含まれていることです。私が理解していることから、一度に1つのzipEntryを読み取り、次にzipInputStream.getNextEntry()を実行してから、もう一度読み取ることができます。ただし、サードパーティのライブラリはこれを理解しておらず、単一のInputStreamを想定しています。zipファイルのすべてのzipエントリは、単一のinputStreamとして使用できる必要があります。

その方法を教えてください。ファイルがローカルに(別のサーバーに)保存されていないため、ZipFileを使用できません。また、すべてのzipEntriesを読み取って、ByteArrayOutputStreamまたは文字列を作成することもできません。これは、ファイルが非常に大きくなる可能性があり、メモリ使用量が急増するためです。

1つのinputStreamが1つのzipファイルの複数のzipエントリから透過的に読み取れるようにする方法が必要です。

よろしくお願いします、プラザンナ

4

1 に答える 1

0

私は専門家ではありませんが、あなたが求めていることを行うには 2 つの方法があります。

最も効率的な方法とは言えませんが、かなり簡単な方法は、それらすべてをバッファーに書き込んでから、そのバッファーを使用して入力ストリームをフィードすることです。ByteArrayOutputStream の使用を調べ、ZipEntries をフィードしてから、同じ buf で ByteArrayInputStream を作成できます。

あるいは、 SequenceInputStream は、あなたが求めていることをしているように聞こえますが、詳細に調べる機会はありませんでした。

K.バラド

于 2011-02-24T09:05:19.893 に答える