2012-01-13 59 views
5

我試圖爲我的錄音機創建一個文件,但這個文件不斷得到一個隨機的名字。因爲這很難處理,所以我想在使用更有意義的名稱創建文件之後重命名該文件。File.renameTo()返回true,但文件沒有被重命名

但是,即使renameTo返回true,該文件還沒有被重命名。

我在這裏做錯了什麼?

outfile = File.createTempFile(amount + "_alarmsave", ".3gp", 
        storageDir); 

      System.out.println("Old file: "+outfile.getAbsolutePath()); 

      File newFile = new File(outfile.getParent(), "alarmsave_" + amount + ".3gp"); 

      System.out.println("new file: "+newFile.getAbsolutePath()); 

      if(outfile.renameTo(newFile)){ 
       System.out.println("Succes! Name changed to: " + outfile.getName()); 
      }else{ 
       System.out.println("failed"); 
      } 

的logcat的輸出:

01-13 18:27:40.264: I/System.out(22913): Old file: /mnt/sdcard/Personal Alarm/13_alarmsave1623959934.3gp 
01-13 18:27:40.264: I/System.out(22913): new file: /mnt/sdcard/Personal Alarm/alarmsave_13.3gp 
01-13 18:27:40.284: I/System.out(22913): Succes! Name changed to: 13_alarmsave1623959934.3gp 

回答

13

RenameTo重命名實際文件,它不會改變File對象。如果您撥打.exists(),您會發現新文件存在,而舊文件不存在。

這是因爲File類代表抽象路徑而不是文件系統上的實際文件。這個想法是File.renameTo給出給定路徑上的文件系統條目的新名稱;它不會改變路徑本身。

+0

那......嗯。食物的思想。奇怪的是,對象本身的名稱不會改變。你是對的,但名字在文件系統本身上確實發生了變化。非常感謝! – 2012-01-13 17:52:40

+0

那麼,我該如何更改實際文件的名稱。我在打印新文件路徑時得到了相同的行爲,但我得到新路徑,但文件的名稱沒有更改?有任何想法嗎 ? – 2014-07-29 22:25:54

+0

'renameTo'更改實際文件的名稱。它不會更改File對象的名稱。 – Joni 2014-07-30 10:53:57

相關問題