2016-07-18 74 views
1

我在嘗試使用File#renameTo()重命名現有文件,但它似乎不起作用。'File#renameTo()'在java中不起作用

下面的代碼代表什麼,我試圖做的:

public class RenameFileDirectory { 
    public static void main(String[] args) throws IOException { 
     new RenameFileDirectory(); 
    } 

    public RenameFileDirectory() throws IOException { 
     File file = new File("C:\\Users\\User-PC\\Desktop\\Nouveau dossier2\\file.png"); 
     File desFile = new File ("C:\\Users\\User-PC\\Desktop\\Nouveau dossier2\\file2.png"); 

     if (file.renameTo(desFile)) { 
      System.out.println("successful rename"); 
     } else { 
      System.out.println("error"); 
     } 
    } 
} 
+1

*但它似乎不工作* - 如何不工作? –

+1

如果我將你的僞代碼清理成實際的代碼,它對我來說工作得很好。你需要更清楚的是,什麼,確切地說,不工作。請提供[mcve]。 – azurefrog

+0

在控制檯,它打印我錯誤,並沒有成功重命名 –

回答

3

嘗試使用Files.move代替。如果你讀了renameTo的javadoc,它指出:

這種方法的行爲的許多方面是天生的平臺依賴性:重命名操作可能無法從一個文件系統的文件移動到另一個,它可能不是原子的,並且如果具有目標抽象路徑名的文件已經存在,它可能不會成功。應始終檢查返回值以確保重命名操作成功。

+0

'move'的好處是通過拋出特定的異常而不是返回false來清楚地告訴我們問題。 – Pshemo