извлекать содержимое банку и хранить в папке назначения - PullRequest
1 голос
/ 15 апреля 2011

как я могу извлечь все папки, подпапки, все файлы и файлы и папки внутри подпапки, которые хранятся в любом jar-файле, и перенести этот контент в папку назначения в java, пока кодирую на платформе eclipse ......... кто-нибудь может мне посоветовать ... я пробовал много кода, связанного с потоком zipinput .. сохранение в перечислении сущностей zipfile и запись его в папку определения.но ничего из этого не работает должным образом ......

Ответы [ 4 ]

0 голосов
/ 20 сентября 2015

Вы можете использовать эту очень простую библиотеку для упаковки / распаковки файла jar

JarManager

Очень просто

import java.io.File;
import java.util.List;

import fr.stevecohen.jarmanager.JarUnpacker;

class Test {
   JarUnpacker jarUnpacker = new JarUnpacker(); 
   File myfile = new File("./myfile.jar");
   File unpackDir = new File("./mydir");

   List<File> unpacked_files = jarUnpacker.unpack(myfile.getAbsolutePath(), unpackDir.getAbsolutePath());
}

Вы также можете использовать Зависимость maven

<dependency>
    <groupId>fr.stevecohen.jarmanager</groupId>
    <artifactId>JarManager</artifactId>
    <version>0.5.0</version>
</dependency>

Вам также нужен мой репозиторий

<repository>
    <id>repo-reapersoon</id>
    <name>ReaperSoon's repo</name>
    <url>http://repo-maven.stevecohen.fr</url>
</repository>

Проверьте последнюю версию со ссылкой ниже, чтобы использовать последнюю зависимость

Пожалуйста, используйте мой трекер открытых сообщений , если вы обнаружите какие-либо ошибки

0 голосов
/ 15 апреля 2011

Если вы хотите решение на основе Eclipse, выберите

File menu > Import ... > General > Archive File

Но если вы хотите решение на Java-коде, вот одно из них, использующее Guava :

public static void unpackZipFile(final File archive, final File targetDirectory)
throws ZipException, IOException {
    ZipFile zipFile = new ZipFile(archive);
    Enumeration<? extends ZipEntry> entries = zipFile.entries();
    while (entries.hasMoreElements()) {
        final ZipEntry zipEntry = entries.nextElement();
        if (zipEntry.isDirectory())
            continue;
        final File targetFile = new File(targetDirectory,
            zipEntry.getName());
        Files.createParentDirs(targetFile);
        ByteStreams.copy(zipFile.getInputStream(zipEntry), Files
            .newOutputStreamSupplier(targetFile).getOutput());
    }
}
0 голосов
/ 15 апреля 2011

Я написал вспомогательный класс для этого:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/util/zip/ZipFiles.html

Вы можете прочитать в моем блоге больше о последней версии и как ее получить:

http://puces -blog.blogspot.com / 2011/03 / Новости-из-программного-smithy.html

0 голосов
/ 15 апреля 2011

Invoke

jar xf yourApp.jar

из Java, и это будет делать.

См. Также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...