2013-09-24 47 views
0

我有以下代碼移動文件,這將失敗:的Java renameTo問題

public static void someFunction() { 
    Util.moveFile(new File("C:\\Users\\zumdamam\\workspace\\CareerBuilder\\data\\careerbuilder\\Java.html"), new File("C:\\temp\\Java.html")); 
} 

public static void moveFile(File src, File dest) { 
     try { 
      if (src.renameTo(dest)){ 
       System.out.println("File is moved successful!"); 
      } else{ 
       System.out.println("File is failed to move!"); 
      } 
     } catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

如果參數更改爲

C:\\Users\\zumdamam\\workspace\\CareerBuilder\\data\\Java.html 

然後,它的工作原理。任何人都有任何線索爲什麼這樣做?

感謝

+2

聽起來像權限 –

+2

我們無法幫助你沒有原因,爲什麼它失敗(例外,錯誤信息?),只看到你的路徑。也許你應該提供一些信息。 – Zhedar

+0

它究竟如何失敗?你有什麼異常? – dbf

回答

2

File.renameTo在Java文檔的方法

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

你可以使用Apache的FileUtils.moveFile

+0

非常感謝。它按預期工作。 – user285825

+0

這很有趣,因爲FileUtils.moveFile使用File.renameTo –

0

這些都是來我的心(在Windows機器上)的原因:

  1. 的源程序文件不存在。
  2. 目標目錄不存在(它不會自動創建)。
  3. 的目標文件名已經存在
  4. 您沒有權限寫入到目標目錄
0

當然。 '\'是java String中的特殊字符(例如,\ n是新行或\ u041f是一些Unicode字符)。如果你想使用'\'本身,你應該把'\\'放在你的字符串裏面