Чтение / распаковка самораспаковывающегося 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... вы можете выполнить свою операцию над своим файлом. Надеюсь, это поможет.
Благодарю.