如何在写入文件时压缩文件?

有没有人知道如何压缩你写的流? 我试图避免将文件写入磁盘,并且想知道我是否可以在将数据写入流时压缩数据。

这背后的用例是原始文件将非常大,我们希望避免将整个解压缩到磁盘上。

我想你会对ZipOutputStream感兴趣。 您可以写入该流,然后将其写入压缩文件。

另外,请查看本教程,了解如何使用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 

将另一个OutputStream包装在ZipOutputStream (或GZIPOutputStream )中,并调用ZipOutputStream上的write方法。

我之前在webapp中做过这个。 我得到了对servlet OutputStream的引用,然后将其提供给ZipOutputStream 。 然后我就拉链了。 压缩文件已提供给客户端浏览器。 简单。

这通常用于使用filter的Web应用程序:

http://tim.oreilly.com/pub/a/onjava/2003/11/19/filters.html