DocumentFile: проблемы при создании определенного имени каталога
У меня есть приложение, которое должно создавать файлы и каталоги на съемной SDCard. Я использую DocumentFile API. В большинстве случаев это работает:), но я нашел один случай, который не работает (по крайней мере, на Samsung GS7):
Я не могу создать каталог с именем "REM" (без кавычек).
Тестовый пример: я работаю в каталоге "/storage/9C33-6BBD/Xxxx", я хочу создать каталог "REM"
DocumentFile parentDf;
// init of parentDf to point to /storage/9C33-6BBD/Xxxx
DocumentFile remDf = df.createDirectory("R.E.M.");
if(remDf == null)
displayMessage("failure");
else
displayMessage("success");
Это будет отображать "успех", поэтому я счастлив. Позже я хочу создать файл в этом каталоге: "REM /myfile".
DocumentFile parentDf;
// init of parentDf to point to /storage/9C33-6BBD/Xxxx
DocumentFile remDf = parentDf.findFile("R.E.M.");
if(remDf == null) {
displayMessage("failure : R.E.M. doesn't exists");
return false;
}
DocumentFile myfileDf = remDf.createFile("text/plain","myfile");
if(remDf == null)
displayMessage("failure");
else
displayMessage("success");
Это будет отображать "сбой: REM не существует"
поэтому я перечисляю файлы с помощью DocumentFile.listFiles и вижу: "REM" (последняя точка пропала!)
если я сделаю (new File("/storage/9C33-6BBD/Xxxx/R.E.M.")).exists()
это возвращает истину!
Если я посмотрю с "ADB Shell"
hero2lte:/storage/9C33-6BBD/Xxxx $ ls -la
total 768
drwxrwx--x 3 root sdcard_rw 131072 2017-07-19 14:18 .
drwxrwx--x 17 root sdcard_rw 131072 2017-07-19 13:31 ..
drwxrwx--x 2 root sdcard_rw 131072 2017-07-19 13:46 R.E.M
hero2lte:/storage/9C33-6BBD/Xxxx $ ls -lad R.E.M.
drwxrwx--x 2 root sdcard_rw 131072 2017-07-19 13:46 R.E.M.
Кто-нибудь знает, где можно найти документацию об ограничениях displayName каталогов?
Спасибо:)
1 ответ
На самом деле это не ограничение DocumentFile API, а просто ограничение файловой системы: файловые системы Microsoft (по крайней мере, VFAT и NTFS) не поддерживают имена каталогов, заканчивающиеся точкой DOT (.) .