Разве Android File.exists () не чувствителен к регистру? - PullRequest
10 голосов
/ 28 июня 2011

Я создал новую папку "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 ]

30 голосов
/ 28 июня 2011

В то время как Linux, а следовательно и Android, обычно чувствительны к регистру, когда дело доходит до имен файлов, файловые системы FAT, которые часто используются на SD-картах, картах памяти и т. Д., Не чувствительны к регистру. Поэтому 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
0 голосов
/ 11 декабря 2018

Согласно документации Android «Android поддерживает устройства с традиционным хранилищем, которое определено как нечувствительная к регистру файловая система с неизменяемыми классами и режимами разрешений POSIX». https://source.android.com/devices/storage/traditional.html

0 голосов
/ 26 февраля 2016

Файлы могут создаваться с учетом регистра и показываться с учетом регистра даже через ftp, но метод существующие () не различает. Вот как это выглядит здесь в / storage / emulated / 0 / somepath на Android 5.1. Я думаю, что это противоречивое поведение.

0 голосов
/ 28 июня 2011

Попробуйте это в Windows, например. имя файла не чувствительно к регистру. как и в случае с Linux (Android основан на Linux). навигация по каталогам также считается нечувствительной к регистру.

так что dd и DD оба распознаются как один и тот же путь.

0 голосов
/ 28 июня 2011

Файл существует, чувствителен к регистру.Я почему-то ожидаю, что вы либо не удаляете первую созданную вами папку (sdcard/dd), либо существует нечетная нечувствительность к регистру файла SDCard (это FAT, которая не чувствительна к регистру, но это действительно не должно иметь значения)

...