Распакуйте зашифрованный zip-файл, используя его входной поток в JAVA - PullRequest
0 голосов
/ 11 июня 2019

Требуется решение на Java для распаковки огромного файла (не помещается в память) с использованием inputtream. Файловый объект не доступен в этом случае. Файл защищен паролем. Решения с объектом File не помогут.

Я уже пробовал с 7Zip, но он не поддерживает вышеупомянутый случай.

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Когда вы используете потоки, вы не должны читать больше данных, чем требуется. ты пробовал это?

   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();
    }
0 голосов
/ 19 июня 2019

У меня тоже были такие проблемы. В этом репо (https://github.com/r331/memzipenc) вы можете найти метод MemZipDec.unzipFiles (byte [] zipBytes, String password) Надеюсь, это поможет.

...