java - 您好,在启动 cmd\design javafx\cmd eclipse 时,我的文件没有删除也没有复制

标签 java javafx cmd

我的程序会复制自身并删除自身。如果我在没有 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/

相关文章:

java - 删除空 javafx 表的默认 'no content in table' 文本

go - exec.command-CMD.exe-通过命令行查询

java - 印地语字体在使用 javafx 的 webview 浏览器上呈现不正确

JavaFx 动态列值

java - 了解 Java 中的对象反射优势

JAVAFX:找不到文件的相对路径

windows - 错误 : Flutter plugin not installed; this adds Flutter specific functionality

windows - 使用批处理文件打开多个 PDF 文档

java - 将 2d 数组列表添加到 3d 数组列表

java - 无法使用 JDK6 的选项启动进程