使用JAVA中的输入流解压缩加密的zip文件

时间:2019-06-11 08:08:14

标签: java unzip password-protection

需要使用Java的解决方案来使用inputstream解压缩一个大文件(不适合内存)。文件对象在这种情况下不可用。该文件受密码保护。使用File对象的解决方案将无济于事。

我已经尝试使用7Zip,但是不支持上述情况。

2 个答案:

答案 0 :(得分:1)

使用流时,不应读取超出要求的数据。你尝试过这个吗?

   public void unzip(InputStream is, Cipher cypher) throws IOException {
        ZipInputStream zis = new ZipInputStream(new CipherInputStream(is,cypher));
        ZipEntry zipEntry = zis.getNextEntry();
        byte[] buffer = new byte[1024];
        while (zipEntry != null) {
            File newFile = new File(zipEntry.getName());
            FileOutputStream fos = new FileOutputStream(newFile);
            int len;
            while ((len = zis.read(buffer)) > 0) {
                fos.write(buffer, 0, len);
            }
            fos.close();
            zipEntry = zis.getNextEntry();
        }
        zis.closeEntry();
        zis.close();
    }

答案 1 :(得分:0)

我也有这样的问题。 在此版本库(https://github.com/r331/memzipenc)中,您可以找到方法MemZipDec.unzipFiles(byte [] zipBytes,字符串密码) 希望对您有所帮助。