Создание txt-файла и просмотр его в диспетчере файлов
Я создал приложение для Android, которое получает информацию от пользователя через EditText
и пишет их name.txt
файл во внутренней памяти телефона. Можно ли открыть текстовый файл в файловом менеджере телефона? Я пытался получить путь к файлу, используя getFilesDir().getAbsolutePath()+"/"+FILE_NAME
, Но не удалось найти файл в файловом менеджере.
2 ответа
Вам нужно использовать Внешнее хранилище, если вы хотите, чтобы другое приложение, такое как File Manager, получило доступ к файлу. Внутреннее хранилище доступно для чтения только вашим приложением.
В комментариях вы задаете правильный вопрос - "Что делать, если у телефона нет внешнего накопителя...?", Это на самом деле не проблема сегодня. См. https://developer.android.com/training/data-storage/files:
Многие устройства теперь делят пространство постоянного хранения на отдельные "внутренние" и "внешние" разделы. Таким образом, даже без съемного носителя, эти два пространства всегда существуют...
==========
Так что измените свой код выше на это:
getExternalFilesDir().getAbsolutePath()+"/"+FILE_NAME
getExternalFilesDir
это метод из android.content.Context
учебный класс. Так что этот вызов будет работать из вашего класса активности, который является Context
,
=============
Дальнейшая поддержка выбора внешнего хранилища также https://developer.android.com/training/data-storage/files.
Внутреннее хранилище лучше всего, когда вы хотите быть уверены, что ни пользователь, ни другие приложения не смогут получить доступ к вашим файлам.
Внешнее хранилище - лучшее место для файлов, которые не требуют ограничений доступа, и для файлов, которыми вы хотите поделиться с другими приложениями или разрешить пользователю доступ с компьютера.
Для каждого приложения имеется личное хранилище, к которому можно получить доступ из самого приложения, а затем к общему хранилищу /sdcard/..., к которому также может получить доступ другое приложение (необходимо получить разрешение хранилища из системы), этот метод сохранит содержимое в файле в личном хранилище приложения
public void saveFile(String fileName, String content) {
try {
FileOutputStream fOut = context.openFileOutput(fileName, Context.MODE_PRIVATE);
fOut.write((content).getBytes());
fOut.flush();
fOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}