java.nio.file.FileSystemException:进程无法访问该文件,因为它正由另一个进程使用

时间:2015-11-25 19:01:42

标签: java windows

我正在编写一个程序,在第一次执行时将它们复制到特定文件夹,在linux或windows中工作。
在Linux中它完美地工作但是当我尝试在Windows上执行相同操作时,我得到以下错误:

  

java.nio.file.FileSystemException:进程无法访问该文件,因为它正由另一个进程使用(在sun.nio.fs.WindowsException中)

所以,另一个进程是程序本身,我应该用什么来跳过这个错误?

我的代码行是:

public void installProgram (){
    System.out.println("Doing Install...");
    File fileToBeInstalled = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());

     try {
        Files.move(fileToBeInstalled.toPath(), installPathFile.toPath(), REPLACE_EXISTING);
     } catch (IOException ex) {
        MainClass.getMainClass(InstallerLinux.class.getName()).log(Level.SEVERE, null, ex);

    }
} 

谢谢!

1 个答案:

答案 0 :(得分:5)

确定, 我没有找到完美的解决方案,但有些东西......

try {
        //Files.move(fileToBeInstalled.toPath(), installPathFile.toPath(), REPLACE_EXISTING);
        Files.copy(fileToBeInstalled.toPath(), installPathFile.toPath(), REPLACE_EXISTING);
        fileToBeInstalled.delete();
} catch (IOException ex) {
    MainClass.getMainClass(InstallerLinux.class.getName()).log(Level.SEVERE, null, ex);

}

这个副本正确地复制了文件并且只在linux执行时正确删除了原文。

我认为我需要使用类加载器来调用类。