首页 > 其他分享 >提取目标jar文件中的内容到指定目录

提取目标jar文件中的内容到指定目录

时间:2023-02-11 12:01:09浏览次数:48  
标签:提取 String java jar public io import 目录

jdk为11

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

/**
 * @author JHL
 */
public class ExtractJarUtil {

    public static final String USER_HOME = System.getProperty("user.home") + File.separator;

    public static final String SYSTEM_TMP_DIR = System.getProperty("java.io.tmpdir") + File.separator;

    public static void extractJar(String jarPath, String destDir) throws IOException {

        File dest = new File(destDir);
        if (!dest.exists()) {
            dest.mkdirs();
        }

        JarFile jar = new JarFile(jarPath);
        Enumeration<JarEntry> entries = jar.entries();
        while (entries.hasMoreElements()) {
            JarEntry entry = entries.nextElement();
            if (entry.isDirectory()) {
                continue;
            }
            InputStream in = jar.getInputStream(entry);
            Path outPath = Paths.get(destDir, entry.getName());
            Files.createDirectories(outPath.getParent());
            try (FileOutputStream out = new FileOutputStream(outPath.toFile())) {
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = in.read(buffer)) != -1) {
                    out.write(buffer, 0, bytesRead);
                }
            }
        }
    }

    public static void main(String[] args) throws IOException {
        // extractJar("example.jar", System.getProperty("java.io.tmpdir"));
        // extractJar("D:\\code\\gitee\\hikvision\\camera\\target\\camera-1.0-SNAPSHOT.jar", System.getProperty("user.home"));
    }
}

标签:提取,String,java,jar,public,io,import,目录
From: https://www.cnblogs.com/hhddd-1024/p/17111169.html

相关文章

  • java 启动查看jar包加载顺序并设置classpath
    本文为博主原创,转载请注明出处:1.idea查看jar包加载顺序jdk8可以通过   -XX:+TraceClassPaths  参数进行查看jar包的加载顺序jdk11可以通过   -......
  • 目录
    搜索DPDP的常用优化:单调队列优化,斜率优化数据结构数论离线算法......
  • Linux文件与目录结构
    Linux文件与目录结构1linux文件Linux系统中一切皆文件。Linux目录结构树形结构      目录解释/bin:bin是Binaries(二进制文件)的缩写,这个目录存......
  • linux002之linux目录结构
    在学习linux目录结构时,建议都是以命令来操作,虽然说它也有可视化界面,但是到企业当中,大部分面对的都是无界面的服务器,况且有界面的话也不用去学习,windows界面谁不会操作。 ......
  • Python 学习爬虫---更改目录位置以及创建新文件
    学习爬虫第N天 今天想着将爬虫获取到的内容放在桌面,所以去学习了下os的操作。 学习如下:importos,os.path (经常性喜欢将文件放在桌面来查看......
  • Linux系统的目录结构
    在Windows下,我们的整个硬盘实际上可以被分为多个磁盘驱动器:而在Linux中,没有C盘D盘这个概念,只有一句经典的话:"在Linux世界里,一切皆文件",而所有的文件都是位于根目录下的,Lin......
  • java -jar 启动依赖包分离的jar包,jasypt 加密报错 Factory 找不到
    1、windows下使用使用分离方式打包,使用java-jar方式启动jar包报错提示Factory相关报错2、将jre/lib/ext下面的sunjce_provider.jar拷贝到分离出来的jar包目录中再......
  • Tomcat启动报错:严重: Unable to process Jar entry [module-info.class]
    1、Springboot版本:2.1.4.RELEASE2、Tomcat版本:apache-tomcat-8.0.303、原因:Tomcat版本底,Springboot2.1.4对应的Tomcat版本应该是:tomcat8.5.16以上4、报错代码:严重:Una......
  • 【Python】获取项目根目录
    以new_didi项目为例:  在任意路径下的文件内获取根目录信息  代码if__name__=="__main__":cur_path=os.path.abspath(os.path.dirname(__file__))......
  • 控制bin文件夹里面的dll不复制到临时目录中
    web.config中<!--shadowCopyBinAssemblies可选的Boolean特性。设置一个布尔值,该值指示Bin目录中的应用程序的程序集是否影像复制到该应用程序的ASP.NET临......