我的程序会复制自身并删除自身。如果我在没有 cmd\javafx 的情况下运行它,那么一切都会处理和删除,但如果使用 cmd\javafx,那么它就会停止处理和删除。 为什么会发生这种情况?我怎样才能绕过这个陷阱。 是的,如果复制并删除任何其他字段,那么所有人都会这样做 代码(复制):
FileChannel source = new FileInputStream(new File(jarLocate)).getChannel();
FileChannel dest = new FileOutputStream(new File("C:\\Users\\"+System.getProperty("user.name")+"\\"+jarName)).getChannel();
try {
source.transferTo(0, source.size(), dest);
} finally {
source.close();
dest.close();
}
代码(删除):
File file = new File(rd);
if (file.delete()) {
System.out.println(" Файл "+rd+" успешно удалён!");
} else {
System.out.println(" Файл "+rd+" не существует.");
}
最佳答案
这只是一个理论,但可能发生的情况是,当您运行 JavaFX 时,JavaFX 在 JAR 文件上放置“文件锁”,因为它“可能”需要 JAR 中的资源(图像、图标) 、翻译文件)。为了防止 JAR 被操纵,它在程序执行时声明 JAR 上的独占文件锁,因此不会发生未定义的行为/异常。
当您在控制台中运行时,它不需要从 JAR 访问任何资源,因此不需要文件锁来保证安全运行,因为它 100% 从内存运行,而无需(就默认库而言) )对 JAR 中资源的依赖。
关于java - 您好,在启动 cmd\design javafx\cmd eclipse 时,我的文件没有删除也没有复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59467907/