我想执行一个程序,并在它运行时读取它的输出并将输出输出到一个压缩文件中。程序的输出可能非常大,所以我们的想法是不要在内存中保存太多 - 只是在我得到它时将它发送到 zip。
Max Stewart
问问题
6812 次
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);
}
换句话说:
- 您创建一个
ZipOutputStream
,给它您要写入的文件。 您创建一个
ZipEntry
,它构成该 zip 文件中的一个文件。即当您打开 myFile.zip 时,其中有 3 个文件,每个文件都是一个ZipEntry
.你把它
ZipEntry
放进你的ZipOutputStream
- 创建一个字节缓冲区来读取您的数据。
- 从您的字节缓冲区中读取
inputStream
,并记住计数。 - 虽然
count
不是-1
,但将该字节 byffer 写入您的zipStream
. - 阅读下一行。
完成后关闭您的流。用你认为合适的方法包装它。
于 2008-09-26T03:51:49.667 回答