有谁知道压缩您正在写入的流的方法吗?我试图避免将文件写入磁盘,并且想知道我是否可以在将数据写入流时压缩数据。
这背后的用例是原始文件将非常大,我们希望避免将整个解压文件写入磁盘。
最佳答案
我想你会对ZipOutputStream感兴趣.您可以写入该流,然后将其写入压缩文件。
此外,请查看本教程以了解 working with compressed (zipped) files in Java .以下是该教程的一个片段,可能有助于说明:
BufferedInputStream origin = null;
FileOutputStream dest = new
FileOutputStream("c:\\zip\\myfigs.zip");
ZipOutputStream out = new ZipOutputStream(new
BufferedOutputStream(dest));
//out.setMethod(ZipOutputStream.DEFLATED);
byte data[] = new byte[BUFFER];
// get a list of files from current directory
File f = new File(".");
String files[] = f.list();
for (int i=0; i<files.length; i++) {
System.out.println("Adding: "+files[i]);
FileInputStream fi = new
FileInputStream(files[i]);
origin = new
BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(files[i]);
out.putNextEntry(entry);
int count;
while((count = origin.read(data, 0,
BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
}
out.close();
关于java - 如何在写入文件时压缩文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4308276/