嗨,在启动cmd \ design javafx \ cmd eclipse时,我的文件没有被删除也没有被复制

时间:2019-12-24 11:10:01

标签: 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+" не существует.");
           }

1 个答案:

答案 0 :(得分:0)

这只是一个理论,但是可能发生的情况是,当您运行JavaFX时,JavaFX在JAR文件上放置了一个“文件锁”,因为它“可能”需要JAR中的资源(图像,图标,翻译文件)。为了防止JAR受到操纵,它在程序执行时要求JAR独占文件锁,因此不会发生未定义的行为/异常。

在控制台中运行时,它不需要从JAR中访问任何资源,因此不保证文件锁可以保证安全运行,因为它在没有内存的情况下100%从内存运行(就默认库而言)有关)对JAR中资源的依赖。