What is the fastest way to extract 1 file from a zip file which contain a lot of file?

前端 未结 3 1571
忘掉有多难
忘掉有多难 2021-02-02 01:08

I tried the java.util.zip package, it is too slow.

Then I found LZMA SDK and 7z jbinding but they are also lacking something.

The LZMA SDK does not provide a ki

3条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-02-02 01:43

    What does your code with java.util.zip look like and how big of a zip file are you dealing with?

    I'm able to extract a 4MB entry out of a 200MB zip file with 1,800 entries in roughly a second with this:

    OutputStream out = new FileOutputStream("your.file");
    FileInputStream fin = new FileInputStream("your.zip");
    BufferedInputStream bin = new BufferedInputStream(fin);
    ZipInputStream zin = new ZipInputStream(bin);
    ZipEntry ze = null;
    while ((ze = zin.getNextEntry()) != null) {
        if (ze.getName().equals("your.file")) {
            byte[] buffer = new byte[8192];
            int len;
            while ((len = zin.read(buffer)) != -1) {
                out.write(buffer, 0, len);
            }
            out.close();
            break;
        }
    }
    

提交回复
热议问题