2017-10-05 24 views
0

我想將單個文件移動到另一個文件夾,但我不能,因爲「它正在被另一個進程使用。「這是我的代碼:Java中的Files.move()給出FilesSystemException錯誤,因爲文件夾是「被另一個進程使用」,但它不是

static File myFile = new File("C:\\filepath"); 
static File myFolder = new File("C:\\folderpath"); 

public static void main(String[] args) 
     throws IOException { 
    fileMove(); 
} 

public static void fileMove() 
     throws IOException { 
    Files.move(myFile.toPath(), myFolder.toPath(), StandardCopyOption.REPLACE_EXISTING); 
    return; 
} 

錯誤消息:在線程「主」 java.nio.file.FileSystemException
異常:C:\ FOLDERPATH:因爲它正在使用的過程不能訪問該文件另一個過程。

我試過不同的文件,不同的文件夾,但每次它說文件正在使用。我用一個基本的文本文件進行了測試,該文件絕對是封閉的,並且在我測試時沒有被使用,但我仍然得到錯誤。有誰知道發生了什麼事?或者,還有另外一種方法可以移動不存在此問題的文件嗎?

+0

[java.nio.file.FileSystemException的可能重複:該進程無法訪問該文件,因爲它正由另一個過程](https://stackoverflow.com/questions/33924479/java-nio-file-filesystemexception-the-process-cannot-access-the-file-because-it) – alzee

+3

'Files.move(myFile.toPath() ,myFolder.toPath()。resolve(myFile.getName()),StandardCopyOption.REPLACE_E XISTING);' –

+0

@alzee該解決方案沒有給出錯誤,但該文件根本沒有移動。 – 666173742d636174

回答

0

從用戶rollback答:

Files.move(myFile.toPath(), myFolder.toPath().resolve(myFile.getName()), StandardCopyOption.REPLACE_EXISTING); 
+1

沒有足夠的時間發佈完整的答案,這就是爲什麼我將它添加爲評論。 說明: Files.move(Path,Path,CopyOption ...)的第二個參數必須是目標路徑(包括目標文件名)。這就是爲什麼你必須添加'.resolve(myFile.getName())' –

0

我用:

public static void moveFile(String origen, String destino) throws IOException { 
     Path FROM = Paths.get(origen); 
     Path TO = Paths.get(destino); 

     CopyOption[] options = new CopyOption[]{ 
      StandardCopyOption.ATOMIC_MOVE 

     }; 
     Files.move(FROM, TO, options); 
    } 
相關問題