如何向jar包里写文件

Posted MaXianZhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何向jar包里写文件相关的知识,希望对你有一定的参考价值。

String newFile = StringConstant.LINUX_JOB_DIRSUFFIX + emptyFileStr;
        Path newpath = Paths.get(newFile);//新的空的文件 就是打算写入到jar文件里的
        
        File emptyFile = newpath.toFile();
        emptyFile.createNewFile(); // 创建辅助空文件
        String tmpJarFileName = "";
        String globalVersion = httpForeignIntefaceConfigInitializer.getProperties().getProperty("Flink.JarName");
        String originalJarPath = StringConstant.LINUX_JOB_FILESUFFIX + globalVersion ;
        Path pathToAddFile = emptyFile.toPath();
        Map<String, String> env = new HashMap<>();
        env.put("create", "true");
        for (int i = 0; i < coreSize; i++) {//从0开始
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            tmpJarFileName = originalJarPath.substring(0, originalJarPath.length() - 4) + "-upgrade" + i + ".jar";
            FileUtils.copyFile(new File(originalJarPath), new File(tmpJarFileName));// 创建中间文件 提交任务时 使用此文件
            Path path = Paths.get(tmpJarFileName);
            URI uri = URI.create("jar:" + path.toUri());
//            Writer writer = null;
            try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {// 向辅助空文件中写入uuid 并将空文件写入中间文件 保证同一批次间使用的jar文件不同
                Path nf = fs.getPath("emptyFile");//jar中要写入的文件名字
                Files.copy(pathToAddFile, nf, StandardCopyOption.REPLACE_EXISTING);
                Writer writer = Files.newBufferedWriter(nf, StandardCharsets.UTF_8, StandardOpenOption.CREATE);
                writer.write(uuid);
                writer.close();
//                fs.close();
            }
        }

  

以上是关于如何向jar包里写文件的主要内容,如果未能解决你的问题,请参考以下文章

如何用java代码把一个jar包里的文件替换掉

如何查找它在哪个jar包里

打包部署后无法读取jar包里的文件(实测可行,Java中读取jar包中的文件)

在linux下,要更新一个jar包里的xml文件,命令怎么写?如何指定要替换的jar包中的路径?

JAVA-如何修改源码(重写JAR包里的类)

jar打包后怎么读取里面的文件