Javaで読み込まれた入力ストリームを圧縮ファイルにパイプするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/137645

  •  02-07-2019
  •  | 
  •  

質問

プログラムを実行したいのですが、実行中にその出力を読み取り、パイプで圧縮して出力します。プログラムの出力は非常に大きくなる可能性があるので、アイデアはメモリに多く保持しすぎないようにすることです-入手したときにzipに送信するだけです。

役に立ちましたか?

解決

ZipOutputStream targetStream = new ZipOutputStream(fileToSaveTo);
ZipEntry entry = new ZipEntry(nameOfFileInZipFile);
targetStream.putNextEntry(entry);

byte[] dataBlock = new byte[1024];
int count = inputStream.read(dataBlock, 0, 1024);
while (count != -1) {
    targetStream.write(dataBlock, 0, count);
    count = inputStream.read(dataBlock, 0, 1024);
}

他の言葉で:

  1. ZipOutputStreamを作成し、書き込み先のファイルを指定します。
  2. ZipEntryを作成します。これは、そのzipファイル内のファイルを構成します。 つまり、myFile.zipを開き、そこに3つのファイルがある場合、各ファイルはZipEntryです。

  3. そのzipEntryをZipOutputStreamに入れます

  4. データを読み込むバイトバッファを作成します。
  5. inputStreamからバイトバッファーに読み込み、カウントを記憶します。
  6. カウントは-1ではありませんが、そのバイトバイトをzipStreamに書き込みます。
  7. 次の行を読みます。

完了したら、ストリームを閉じます。適切な方法でメソッドにラップします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top