有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java提取jar内容并存储在目标文件夹中

如何提取存储在任何jar文件中的所有文件夹、子文件夹、所有文件和文件以及子文件夹中的文件夹,并在eclipse平台中编码时将这些内容复制到java中的目标文件夹。。。。。。。。。 谁能建议我。。。 我尝试了许多与zipinput流相关的代码。。将枚举中的实体存储在zipfile中,并将其写入detination文件夹。但没有一个能正常工作


共 (4) 个答案

  1. # 1 楼答案

    您可以使用这个非常简单的库来打包/解包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>
    

    使用下面的链接检查最后一个版本以使用最后一个依赖项

    如果您发现一些错误,请使用我的public issue tracker

  2. # 4 楼答案

    如果您想要基于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());
        }
    }