2011-04-11 14 views
1

我知道這只是一個整形,但下面的代碼應該重命名我的目錄,但它不。差別只是一些大寫 - 但afaik Android在文件名方面完全區分大小寫。就像Linux一樣也是如此。 重命名給出了一個真實的結果,表明操作成功。然而,所述目錄不被重命名,並且它仍然有兩個大寫的D。 我以前使用相同的代碼從/ DeadDropDroid重命名爲/.DeadDropDroid,並且工作正常。每次運行下面的代碼時,日誌都會顯示「成功」。重命名目錄給出了肯定的結果代碼,但沒有重命名

oldBasePath = new File (Environment.getExternalStorageDirectory()+ "/.DeadDropDroid/"); 
if (oldBasePath.exists()) { 
    if (oldBasePath.renameTo(new File(Environment.getExternalStorageDirectory()+ "/.DeaddropDroid/"))) 
     Log.v(TAG, "Rename success."); 
    else 
     Log.v(TAG, "Rename fail."); 
    } 
+0

如果你試圖改變它的名字是不同於市值其他如重命名它來測試它是否重命名? – James 2011-04-11 17:10:10

+0

是的 - 確實如此。這實際上是我第二次重命名。首先從/ DeadDropDroid到/.DeadDropDroid,使其成爲一個隱藏的目錄。這是完美的。恐怕這裏的問題是「FAT保存但不區分大小寫」問題。今晚稍後再測試。 – Wouter 2011-04-12 14:38:01

回答

3

看看this對類似問題的回答。關鍵內容是

默認情況下,SD卡被格式化爲FAT,它保留大小寫但不區分大小寫。

我做了一些檢查,可以確認提到的File方法在SD卡上工作'不區分大小寫'。如果存在LowerCase目錄版本而不是UpperCase版本,您甚至不能檢查oldBasePath.exists(),因爲它也將返回true。您必須閱讀目錄內容,並將您收到的文件/目錄名稱與您的模式進行比較。

重命名也將是(通過一個臨時文件)兩步法,e.g

.DeadDropDroid -> .DeadDropDroid_tmp -> .DeaddropDroid 
+0

確實是這個問題......謝謝! – Wouter 2011-04-12 17:07:15