Чтобы успешно упаковать 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 никогда не вызывается, но я не уверен, в чем причина.