在 Java 中创建 zip 归档文件

2022-09-01 04:59:23

我有一个由7zip程序创建的文件。我用放气的方法压缩它。现在我想在 中创建相同的存档(使用相同的MD5sum)。当我创建zip文件时,我使用了我在Internet上找到的算法,例如 http://www.kodejava.org/examples/119.html 但是当我使用此方法创建zip文件时,压缩的大小大于未压缩文件的大小,所以发生了什么?这不是一个非常有用的压缩。那么我如何创建与我用7zip程序创建的zip文件完全相同的zip文件?如果它有帮助,我有关于我在7zip程序中创建的zip文件的所有信息。java


答案 1
// simplified code for zip creation in java

import java.io.*;
import java.util.zip.*;

public class ZipCreateExample {

    public static void main(String[] args) throws Exception {

        // input file 
        FileInputStream in = new FileInputStream("F:/sometxt.txt");

        // out put file 
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream("F:/tmp.zip"));

        // name the file inside the zip  file 
        out.putNextEntry(new ZipEntry("zippedjava.txt")); 

        // buffer size
        byte[] b = new byte[1024];
        int count;

        while ((count = in.read(b)) > 0) {
            out.write(b, 0, count);
        }
        out.close();
        in.close();
    }
}

答案 2

只是为了澄清,您在7zip中使用了7zip中的ZIP算法作为您的原始算法?此外,7zip声称比其他供应商具有2-10%的压缩比。我冒昧地猜测,Java中内置的ZIP算法并不像7zip中的算法那样优化。最好的方法是从命令行调用7zip,如果你想要一个类似的压缩文件。

您是否正在尝试解压缩ZIP文件,更改其中的文件,然后重新压缩它以使其具有相同的MD5哈希?哈希值旨在防止您这样做。


推荐