WinZip не может открыть заархивированный файл, подготовленный с использованием Apache Commons Compress API

У меня есть сценарий для архивирования некоторых файлов и папок (с подпапками). Мне удалось добиться этого с помощью библиотеки Apache Commons Compress с помощью < href="https://stackoverflow.com/a/26745529/3942769">этот пост. У меня есть приложение, которое использует java.util.zip< /a> библиотека для распаковки файла. Эта утилита не может прочитать заархивированную папку Apache Commons Compress, самый первый ZipEntry равен нулю.

Однако, когда сжатый файл подготовлен с помощью WinZip, утилита без проблем распаковывает его.

Я также пытался разархивировать сжатый zip-файл с помощью WinZip, он выдает ошибку - Невозможно открыть локальный заголовок для «имя файла». Любая идея, как добавить локальные заголовочные файлы? Я проверил исходный код на наличие ZipArchiveOutputStream, он записывает в локальный файл заголовка.

Любые указатели на эту проблему? Распакуйте код ниже:

{
File destDir = new File(destDirectory);
ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zipIn.getNextEntry();

// iterates over entries in the zip file
while (entry != null) {
    String filePath = destDirectory + File.separator + entry.getName();
    if (!entry.isDirectory()) {
        // if the entry is a file, extracts it
        extractFile(zipIn, filePath, CurrentSize, totalSize);
    } else {
        // if the entry is a directory, make the directory
        File dir = new File(filePath);
        dir.mkdir();
    }
    zipIn.closeEntry();
    entry = zipIn.getNextEntry();
}
zipIn.close();
}

Однако я могу видеть, что в zip-файле есть записи другими способами, но, к сожалению, не могу включить новый код в утилиту. Фрагмент кода:

ZipFile zipFile =  new ZipFile(new File(zipFilePath));
Enumeration entries = zipFile.entries();
   while(entries.hasMoreElements()) {
       ZipEntry ze = (ZipEntry) entries.nextElement();
       System.out.println(ze.getName());
       if(!ze.isDirectory())
           System.out.println("Is not a directory");
   }

person codemegexp    schedule 22.04.2015    source источник
comment
Можете ли вы предоставить образец zip-файла? Java использует кодировку utf-8 в zip-файлах, начиная с jdk 6 или 7. Возможно, ваш файл winzip использует ANSI. Образец покажет ответ.   -  person Hannes    schedule 22.04.2015
comment
Насколько я понимаю, вы можете создать zip-файл, но не можете его повторно открыть. Скорее всего, сгенерированный zip поврежден. Не могли бы вы предоставить код, который вы используете для его создания?   -  person Didier L    schedule 23.04.2015
comment
Спасибо за ответ. @Hannes Я разместил образцы заархивированных файлов по адресу ‹dropbox.com/sh /wduk0ifaj9f1x7f/AADCE0Iq-JYhyBEujmRz7Zhya?dl=0  -  person codemegexp    schedule 23.04.2015
comment
@DidierL Я следил за фрагментом кода из этого сообщения - stackoverflow.com/a/26745529/3942769, как я сказал в своем вопрос. Я могу распаковать заархивированную папку в Windows. Но не используя приложение winZip.   -  person codemegexp    schedule 23.04.2015
comment
Dropbox @codemegexp хочет, чтобы я залогинился...   -  person Hannes    schedule 23.04.2015
comment
@Hannes закройте всплывающее окно журнала. Должна быть возможность просматривать файлы.   -  person codemegexp    schedule 23.04.2015