我想执行一个程序,当它运行时读入它的输出并将输出输出到一个压缩文件中。该程序的输出可能非常大,所以我的想法是不要在内存中保留太多 - 只是在我得到它时将其发送到 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);
}
换句话说:
- 您创建一个
ZipOutputStream
,为其提供您要写入的文件。 您创建了一个
ZipEntry
,它构成了该 zip 文件中的一个文件。 即当您打开 myFile.zip 时,里面有 3 个文件,每个文件都是一个ZipEntry
。您将
ZipEntry
放入您的ZipOutputStream
- 创建一个字节缓冲区以将数据读入。
- 从您的
inputStream
读取到您的字节缓冲区,并记住计数。 - 当
count
不是-1
时,将该字节 byffer 写入您的zipStream
。 - 阅读下一行。
完成后关闭流。将其包装在您认为合适的方法中。
关于java - 在用 Java 读入时如何将输入流通过管道传输到压缩文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/137645/