Ошибка записи скрытого файла .nomedia во внутреннее хранилище

#android

#Android

Вопрос:

Я хочу создать файл .nomedia во внутреннем каталоге кэша, где я буду хранить изображения, и попробовал следующее..

 File dir = getCacheDir();
File output = new File(dir, ".nomedia");
boolean fileCreated = output.createNewFile();
  

Когда я пытаюсь, значение этого fileCreated равно false, и файл не создается.
Если я использовал nomedia без точки, файл будет создан, но это бесполезно, поскольку MediaScanner проверяет, существует ли файл .nomedia.

Я также пробовал это с FileOutputStream и записывать данные в файл на случай, если это произошло из-за того, что я создал только пустой файл, но это тоже не работает.

У кого-нибудь есть идеи, почему это может привести к сбою?

Ответ №1:

Хм, вы действительно уверены, что файл еще не существует? Пожалуйста, обратите внимание, что вам нужно выполнить ls -a , чтобы увидеть файл, начинающийся с точки.

В документации File.createNewFile() говорится:

Возвращает true, если файл был создан, false, если он уже существует.

Если файл не создан по другим причинам (например, из-за безопасности), он должен выдать исключение.

Комментарии:

1. Да, файл создается, он отображается с символом ls -a, но он не отображается в проводнике в DDMS, поэтому я подумал, что он не был создан, спасибо.

2. действительно ли полезно создавать этот файл во внутренней папке кэша? Разве файлы там уже не являются общедоступными для всех приложений?