Java压缩大文件

Java压缩大文件,java,gzip,tar,compression,Java,Gzip,Tar,Compression,我正在开发一个应用程序,它可以处理一些非常大的文件,每个文件大约180mb,其中有3个文件。我想在我的应用程序中添加一个选项,通过压缩zip或tar之类的文件来备份这些文件。最好的选择是在Java中尽可能地压缩它们?焦油?拉链?Gzip?查看包中的类。您可以使用编程方式来完成此操作。好的,使用zip,这里是我使用的方法。我在网上找到了它,并对它进行了修改,使其成为垃圾路径,然后稍微提高了缓冲区,将大约450mbs的数据降低到100mbs,所以还不错:)谢谢你的帮助 public void zip

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

查看包中的类。

您可以使用编程方式来完成此操作。

好的,使用zip,这里是我使用的方法。我在网上找到了它,并对它进行了修改,使其成为垃圾路径,然后稍微提高了缓冲区,将大约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) {
        }

    }
public void zippers(String[]文件名,String zipfile){
字节[]buf=新字节[2048];
试一试{
字符串outFilename=zipfile;
ZipOutputStream out=newzipoutpstream(newfileoutputstream(outFilename));
对于(int i=0;i 0){
out.write(buf,0,len);
}
out.closeEntry();
in.close();
}
out.close();
}捕获(IOE异常){
}
}

加1给你们俩:)

是的。取决于您希望在复杂性和性能之间进行的权衡。Java作为标准库的一部分提供了ZIP支持(请参阅其他注释),但是使用bzip或tar.gz可以获得更好的压缩。如果你愿意接受额外的JAR依赖项,Apache Compress是处理这些格式的最简单方法。好吧,那么你们都建议我使用zip进行最大程度的压缩?如果你知道文件的格式或内容,也许定制的压缩程序比普通的压缩程序工作得更好。还要确保文件中只包含您要备份的绝对重要的数据。