2012-07-02 4 views
1

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

Я попробовал три подхода, один упомянутый в How can I read from a Winzip self-extracting (exe) zip file in Java?

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

Окончательный один с помощью 7-Zip LZMA SDK, который также не полезно

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

ответ

0

TrueZip работает лучше всего в этом случае. (Atleast в моем случае)

самораспаковывающийся зип имеет следующий формат code1 HEADER1 file1 (в то время как обычные почтовый имеет формат 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 (новая строка («C: \ 2006Production.exe»), new String ("c: \"), "");

Вы можете скачать Truezip исходных файлов пакета (банку) здесь 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 ... вы можете выполнить свою собственную операцию в своем файле. Надеюсь, это поможет.

Спасибо.