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

标签 java file zip stream compression

有谁知道压缩您正在写入的流的方法吗?我试图避免将文件写入磁盘,并且想知道我是否可以在将数据写入流时压缩数据。

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

最佳答案

我想你会对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/

相关文章:

java - 使用 log4j 的 Web 应用程序中的日志文件位于何处?

java - Eclipse 不会打印我的代码中的空格

java - java中使用数组进行队列

c - 响应 isatty(3) 的文件

python - 从文件中读取会删除文档中最后一个字符串的最后一个字母?

python - 将一个文件的部分写入另外两个文件

java - 对同一类中调用 2 个测试函数的函数进行单元测试

linux - 如何获取 zip 中的目录列表?

java - ZipOutputStream 在 Android 上生成损坏的 zip 文件

.NET ZIP 库在内存中工作