如何将输入流传输到压缩文件,因为它是用Java读入的?

时间:2008-09-26 03:43:38

标签: java zip inputstream

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

1 个答案:

答案 0 :(得分: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. 阅读下一行。
  8. 完成后关闭你的流。将其包装在您认为合适的方法中。