如何使用Java将文件移动到已编译的.jar文件中?

时间:2017-03-29 09:52:02

标签: java minecraft minecraft-forge

我正在制作文件导入系统,而我无法将文件移动到应用程序所在的已编译.jar文件中。 这就是我要做的事情:

Path FROM = Paths.get(filePath.getText());
Path TO = Paths.get("C:\\Users\\" + System.getProperty("user.name") + 
"\\AppData\\Roaming\\.minecraft\\mods\\music_crafter-1.0\\src\\main\\resources\\assets\\music_crafter\\sounds\\block\\music_player");
                                       //jar file
Files.move(FROM, TO.resolve(FROM.getFileName()), StandardCopyOption.REPLACE_EXISTING);

1 个答案:

答案 0 :(得分:0)

您需要在内部处理jar文件。 Jar是不是目录,它是一个压缩容器文件(几乎是一个不同扩展名的ZIP文件)。

为此,假设您使用的是Java 6,则有2个选项:

  1. 将内容解压缩到临时工作目录(已构建 在API中,或使用诸如Apache Commons Compress之类的库 做你的工作(复制,删除等),然后重新压缩。
  2. 对随附的Jar实用程序进行外部命令行调用 爪哇
  3. 其中,只有(1)才有意义。

    如果您可以将Java升级到7+,那么可以使用第三个选项:  3.使用Zip File System Provider将其视为代码

    中的文件系统 然而,所有这些都说:

    根据你的问题的评论,你真的可能想看看你是否需要做这件事?为什么需要插入现有的罐子?如果这是“外部”数据,那么在单独的资源位置/容器中会更好,而不是应用程序jar。