Zeroturnaround zip library переименовывает все файлы в архиве - PullRequest
0 голосов
/ 19 марта 2019

Чтобы успешно упаковать zip-файл, я должен закодировать файл специальными символами, но позже мне нужно вернуть их в обычный текст.Я должен кодировать, потому что я получил исключения, если файл получает странные символы в имени файла (* / SPACE) и их комбинации.Окружение - это Windows, оно должно быть таким.Как перебрать существующий zip и переименовать все файлы внутри?Результатом может быть тот же zip-файл или другой, который он не измеряет.Мой код, который не работает:

        final String name = project.getUuid() + ".zip";
        final File zip = new File(downloadFolder, name);
        ZipUtil.pack(archiveFolder, zip); // create zip with encoded file names
        final StringZipEntryTransformer stringZipEntryTransformer = new StringZipEntryTransformer() {
            protected String transform(ZipEntry zipEntry, String input) throws IOException {
                String decodedString = URLDecoder.decode(input, "UTF-8"); // code never comes into this abstract method I guess because of the path parameter in line 10. it is a first parameter
                return decodedString;
            }
        };
        ZipEntryTransformerEntry zipEntryTransformerEntry = new ZipEntryTransformerEntry(File.pathSeparator + "*", stringZipEntryTransformer);
        final String projectNameZip = project.getName() + ".zip";
        final File transformedZip = new File(downloadFolder, projectNameZip);
        ZipUtil.transformEntry(zip, zipEntryTransformerEntry, transformedZip);

Проблема в том, что метод transform никогда не вызывается, но я не уверен, в чем причина.

...