【问题标题】:How do you pipe an inputstream to a zipped file as it's read in with Java?在使用 Java 读入时,如何将输入流通过管道传输到压缩文件?
【发布时间】:2010-09-13 08:26:37
【问题描述】:

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

【问题讨论】:

    标签: java zip inputstream


    【解决方案1】:
    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. 阅读下一行。

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

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 2018-02-21
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 2015-01-18
      相关资源
      最近更新 更多