重命名目录给出正结果代码,但没有重命名

时间:2011-04-11 16:53:56

标签: android

我知道它只是化妆品,但下面的代码应该重命名我的目录,但事实并非如此。差异只是一些大写 - 但是在文件名方面,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.");
    }

1 个答案:

答案 0 :(得分:3)

查看this对类似问题的回答。关键内容是

默认情况下,SD卡格式化为FAT,保留大小写但不区分大小写。

我做了一些检查,可以确认提到的File方法在SD卡上工作'不区分大小写'。您甚至无法检查oldBasePath.exists(),因为如果存在LowerCase目录版本而不是UpperCase版本,ist也将返回true。您必须阅读目录内容,并将您收到的文件/目录名称与模式进行比较。

重命名也是一个两步法(通过临时文件),例如

.DeadDropDroid -> .DeadDropDroid_tmp -> .DeaddropDroid