我想刪除一個文件並用舊文件重命名另一個文件,但是我不能移動這個文件,因爲java拋出了java.nio.file.FileAlreadyExistsException
以下是代碼段我使用Files.move和Files.copy引發java.nio.file.FileAlreadyExistsException
static void swapData(String origFilePath, String tempFilePath) throws IOException{
Path tempPath = FileSystems.getDefault().getPath(tempFilePath);
Path origPath = FileSystems.getDefault().getPath(origFilePath);
try{
String origFileName = null;
File origFileRef = new File(origFilePath);
if(Files.exists(origPath)){
origFileName = origFileRef.getName();
Files.delete(origPath);
if(Files.exists(origPath))
throw new IOException("cannot able to delete original file");
}
if(origFileName != null)
Files.move(tempPath, tempPath.resolveSibling(origFileName), StandardCopyOption.REPLACE_EXISTING);
}catch(IOException e){
throw e;
}
}
這裏是我的Files.move(tempPath, tempPath.resolveSibling(origFileName), StandardCopyOption.REPLACE_EXISTING);
recieving 異常此外,當我看到在Windows資源管理器這個文件,它的縮略圖是存在的,但能不能打開它。我無法理解它爲什麼會發生,如果我正在使用REPLACE_EXISTING,爲什麼它會拋出FileAlreadyExistsException異常。
另外我編輯了上一個問題,因爲它沒有明確說明。
請幫助。
Anuj
你能告訴你**到**和**目錄嗎? –
當然,這不是一個簡單的本地文件系統權限問題? 順便說一句:我認爲你混淆了路徑? 'destPath'被存儲到'moveFrom'。也許只是一個品味問題,但目標應該是目標(「moveTo」)。 ;) **編輯**關於權限:您是否檢查過該文件是否已打開,並且您的用戶有權訪問該文件並寫入目標目錄? – DoNuT
請參考新陳述的問題 – aga