java - 重写java中使用的文件

标签 java eclipse minecraft

我玩 Minecraft(著名的 Java 游戏),我想在 Minecraft 运行时重写 Minecraft 正在使用的 jar 文件(用其他 1.7.10-OptiFine_HD_U_D6.jar 替换 1.7.10-OptiFine_HD_U_D6.jar),并且不关闭 Minecraft 我测试了这段代码,但该文件不会被删除,因为 Minecraft 正在使用它。 https://hastebin.com/iwuxiyokuy.cpp (我把这段代码放在Minecraft的代码中,我想如果Minecraft正在 sleep ,它不会被认为是一个正在使用的文件) 但是,我尝试了一些想法,发现了这一点: 在 Eclipse 中,您可以重写 1.7.10-OptiFine_HD_U_D6.jar,而无需关闭 Minecraft (像这样http://hpics.li/4971e5f)

那么,当 Minecraft 运行且不关闭 Minecraft 时,如何像 Eclipse 那样用 java 重写 1.7.10-OptiFine_HD_U_D6.jar ?

祝你有美好的一天!

(对不起,我的英语不好,我很年轻,而且我是法国人:/)

最佳答案

问题是您的操作系统(本例中为 Windows)锁定了该文件,因为 Minecraft (Java) 正在使用该文件。 在 Java 中您无法采取任何措施来解决此限制。

显示该文件已存在的对话框只是 Eclipse 的一个警告,这样您就不会意外覆盖已经存在的/错误的文件;它与操作系统锁定文件无关。

出于好奇,为什么要在 Minecraft 运行时替换该文件?为什么不关闭 Minecraft,替换文件并再次启动 Minecraft? 我非常怀疑 Minecraft 在启动时加载文件后是否会加载该文件。

编辑 1: 这应该做:

File source = new File("path/to/source/file");
File destination = new File("C:/Users/Victor/AppData/Roaming/.minecraft/versions/1.7.10-OptiFine_HD_U_D6/1.7.10-OptiFine_HD_U_D6.jar");
try {
    Files.copy(source.toPath(), destination.toPath(), StandardCopyOption.REPLACE_EXISTING);
} catch (IOException exception) {
    exception.printStackTrace();
}

关于java - 重写java中使用的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43412821/

相关文章:

android - 我可以使用 Eclipse IDE for Java EE 开发 android 应用程序吗?

java - 我在 Forge 1.12.1 中的自定义命令不起作用

java - 使用 Java Web 服务。 id session 问题

Java,JOptionPane 无法应用于给定类型

java - Eclipse插件安装错误

java - 我如何通过 Activity 打开我自己的元素栏?

simulation - 体素结构(Minecraft、Dwarf Fortress 等)的模拟物理?

java - 字段的 UML 域模型可见性

java - 如何将枚举类型存储为小写字符串?

java - 将 eclipse java 项目转换为 maven 不会创建 src/test/java 目录