【问题标题】:Java Compress Large FileJava 压缩大文件
【发布时间】:2011-06-30 23:58:17
【问题描述】:

我正在开发一个应用程序,该应用程序可以处理一些非常大的文件,每个文件大约 180mb,其中有 3 个。我想在我的应用程序中添加一个选项,通过将这些文件压缩为 zip 或 tar 或其他方式来备份这些文件。最好的选择是在 Java 中尽可能地压缩它们?柏油?压缩?压缩包?

【问题讨论】:

  • 好的,所以你们都建议我使用 zip 然后进行最大压缩?
  • 如果您知道文件的格式或内容,也许定制压缩器比通用压缩器效果更好。还要确保文件只包含您要备份的绝对重要数据。

标签: java gzip tar compression


【解决方案1】:

您可以使用Apache Compress 以编程方式执行此操作。

【讨论】:

  • 是的。取决于您想要在复杂性和性能之间进行权衡。 Java 作为标准库的一部分提供 ZIP 支持(请参阅其他评论),但使用 bzip 或 tar.gz 将获得更好的压缩。如果您愿意接受额外的 JAR 依赖项,Apache Compress 是使用这些格式的最简单方法。
【解决方案2】:

好的,这里是我使用的方法。我在网上找到它并将其修改为垃圾路径,然后将缓冲区稍微提高了一点,将大约 450mbs 的数据降低到 100mbs,所以还不错:) 感谢您的帮助

public void zipper(String[] filenames, String zipfile){
        byte[] buf = new byte[2048];
        try {
            String outFilename = zipfile;
            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
            for (int i=0; i<filenames.length; i++) {
                FileInputStream in = new FileInputStream(filenames[i]);
                File file = new File(filenames[i]);
                out.putNextEntry(new ZipEntry(file.getName()));
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                out.closeEntry();
                in.close();
            }
            out.close();
        } catch (IOException e) {
        }

    }

给你们两个加 1 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多