2010-06-03 3 views
2

Есть ли у кого-нибудь опыт работы с библиотекой Java TrueZip? Я пытаюсь сделать то, что должно быть простой задачей, расстегивая архив, содержащий вложенные папки, и до сих пор мне не удалось заставить его работать.TrueZip Recursive Unsipping?

(Причина я использую TrueZip из-за encoding foreign character bug в методах java.util.zip)

Глядя на API, кажется, что file.archiveCopyAllTo() является их «распаковать» метод. Однако приведенный ниже код работает только в том случае, если мой архив плоский и содержит только файлы. Он не работает, если есть какие-либо подпапки.

private static void testUnzip(String zipPath, File unzipFolder) 
{ 
    de.schlichtherle.io.File zipFile = new de.schlichtherle.io.File(zipPath); 
    boolean result = zipFile.archiveCopyAllTo(unzipFolder); 
    System.out.println("UNZIP RESULT: " + result); 
} 

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

EDIT: Я отказался от использования TrueZIP. Я смог использовать org.apache.tools.zip для извлечения файлов с именами, отличными от ASCII, в именах файлов. Это API имеет больше смысла для меня тоже ...

+0

ugh, у них есть свой класс файлов? Это смутило бы меня до смерти. –

+0

Вы можете попробовать этот 'zipFile.archiveCopyAllTo (unzipFolder, ArchiveDetector.DEFAULT, ArchiveDetector.NULL);' – cubanacan

+0

Если это не поможет, то вы должны использовать версию TrueZIP 6 или более поздней версии, которая автоматически распаковывает только ваш код. – cubanacan

ответ

1

в моем приложении я должен был добавить

de.schlichtherle.io.File.umount(zipFile); 

в качестве последнего оператора, чтобы увидеть результат, кажется, что (по крайней мере, некоторые версии) truezip кэши весь zip и записывает его на диск только во время метода umount.

HTH

Смежные вопросы