Чтение / распаковка самораспаковывающегося zip-файла в JAVA

Я пытался прочитать самораспаковывающийся zip-архив (расположенный здесь ftp://ftp.dnr.state.oh.us/OilGas/Download/Production/By_Year/2010Production.exe) с использованием кода Java.

Я попробовал три подхода, один из которых упоминался в разделе Как я могу прочитать самораспаковывающийся (exe) zip-файл Winzip на Java?

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

Последний, использующий 7-ZIP LZMA SDK, который также бесполезен

Кроме того, я просмотрел несколько других ресурсов в Интернете, но ничего полезного. Может кто-нибудь, пожалуйста, помогите мне?

2 ответа

Решение

TrueZip работает лучше всего в этом случае. (По крайней мере в моем случае)

Самораспаковывающийся zip-файл имеет следующий формат code1 header1 file1 (в то время как обычный zip-файл имеет формат header1 file1)... Код рассказывает о том, как извлечь zip-архив

Хотя утилита извлечения Truezip жалуется на лишние байты и выдает исключение

Вот код

 private boolean Extract(String src, String dst, String incPath) {


    TFile srcFile = new TFile(src, incPath);
    TFile dstFile = new TFile(dst);
    try {
        TFile.cp_rp(srcFile, dstFile, TArchiveDetector.NULL);
    } catch (IOException e) {
       return true;
    }

    return true;
}

Вы можете вызвать этот метод как Extract(new String("C:\2006Production.exe"), new String("c:\"), "");

Вы можете скачать пакет исходных файлов Truezip (jar) здесь http://repo1.maven.org/maven2/de/schlichtherle/truezip/truezip-samples/7.5.5/truezip-samples-7.5.5-jar-with-dependencies.jar

Вам нужно будет импортировать классы в вашем коде.

import de.schlichtherle.truezip.file.TArchiveDetector; import de.schlichtherle.truezip.file.TFile;

Файл извлекается на диске c... вы можете выполнить свою операцию над своим файлом. Надеюсь, это поможет.

Благодарю.

Apache Commons Compress поддерживает это.

Другие вопросы по тегам