Извлеките конкретную папку из банки и скопируйте ее в нужное место в моей системе - PullRequest
1 голос
/ 11 июля 2011

Мне нужно извлечь папку ресурсов изнутри банки в нужное место в моей системе. Я хочу сделать это, вызвав функцию в классе, который находится в том же банке.

Я не хочу копировать один файл за раз. Подскажите, пожалуйста, как я могу скопировать всю папку?

Сначала я подумал о том, чтобы сжать их в zip, скопировать в другое место и извлечь. Как это будет работать? Есть ли более эффективный способ сделать это?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Если вы собираетесь сделать это с помощью API Java, я знаю только один способ: вы должны использовать JarInputStream или ZipInputStream, перебирать записи Zip, определять, какие записи принадлежат папке, и извлекать их, то есть читать из zip и записывать диск. Другого «магического» пути нет.

Но если вы хотите, вы можете использовать какой-то API более высокого уровня. Проверьте VFS из Джакарты: http://commons.apache.org/vfs/

Он предоставляет API, который, вероятно, делает то, что вам нужно.

0 голосов
/ 11 июля 2011

Вы можете использовать Runtime.exec api для выполнения чего-то похожего на следующее:

jar xf <your_jar_file_name> <path_to_directory_to_be_extracted>

Таким образом, вам не нужно создавать специализированный класс для обработки файлов Jar, и вы можете сосредоточиться на решении актуальной проблемы.

Примечание: это ограничено тем, что JDK может не работать на JRE.

...