Извлеките конкретную папку из банки и скопируйте ее в нужное место в моей системе

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

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

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

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

2 ответа

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

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

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

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

jar xf <your_jar_file_name> <path_to_directory_to_be_extracted>

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

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

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