7

我想执行一个程序,并在它运行时读取它的输出并将输出输出到一个压缩文件中。程序的输出可能非常大,所以我们的想法是不要在内存中保存太多 - 只是在我得到它时将它发送到 zip。

4

1 回答 1

8
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. 虽然count不是-1,但将该字节 byffer 写入您的zipStream.
  7. 阅读下一行。

完成后关闭您的流。用你认为合适的方法包装它。

于 2008-09-26T03:51:49.667 回答