Android File.exists()不区分大小写吗?

时间:2011-06-28 06:54:44

标签: android file case-sensitive exists mkdir

我已经创建了一个新文件夹“sdcard / dd ”:

File album = new File(albumPath);

if (album.exists()) {
   Log.d(TAG, albumPath + " already exists.");
} else {
   boolean bFile = album.mkdir();
}

再次,我用相同的代码创建了第二个文件夹“sdcard / DD ”,但是,这次album.exists()返回true,表示“dd”等于“ DD”。

任何人都知道为什么File.exists()无法检查文件夹名称的大小写?谢谢!

5 个答案:

答案 0 :(得分:30)

虽然Linux,因此也是Android,在文件名方面通常是区分大小写的,但是常常用于SD卡,记忆棒等的FAT文件系统不区分大小写。因此,Android在处理这些文件系统上的文件时不会区分这些情况。

因此,如果您有两个文件/sdcard/file(在SD卡上)和/data/file(在内部文件系统上),您将获得以下结果:

new File("/sdcard/file").exists(); // true
new File("/sdcard/FILE").exists(); // true, /sdcard is a case-insensitive file system
new File("/data/file").exists(); // true
new File("/data/FILE").exists(); // false, /data is a case-sensitive file system

答案 1 :(得分:0)

文件存在区分大小写。我不知道你有没有想要删除你创建的第一个文件夹(sdcard/dd)或者有一些奇怪的sdcard文件不区分大小写(它是FAT,它不区分大小写,但这真的不重要)。

答案 2 :(得分:0)

例如在Windows中试试这个。文件名不区分大小写。就像linux的情况一样(android基于linux)。浏览目录也被识别为不区分大小写。

所以dd和DD都被认为是相同的路径。

答案 3 :(得分:0)

根据Android文档“ Android支持具有传统存储的设备,该存储被定义为具有不可变POSIX权限类和模式的不区分大小写的文件系统。” https://source.android.com/devices/storage/traditional.html

答案 4 :(得分:-2)

文件可以区分大小写创建,即使通过ftp也能区分大小写,但exists()方法无法区分。这就是Android 5.1上/ storage / emulated / 0 / somepath中的情况。我认为这是不一致的行为。