Создание txt-файла и просмотр его в диспетчере файлов - PullRequest
0 голосов
/ 30 декабря 2018

Я создал приложение для Android, которое получает данные от пользователя через EditText и записывает их в файл name.txt во внутренней памяти телефона.Можно ли открыть текстовый файл в файловом менеджере телефона?Я попытался получить путь к файлу, используя getFilesDir().getAbsolutePath()+"/"+FILE_NAME.Но не удалось найти файл в файловом менеджере.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Вам необходимо использовать внешнее хранилище, если вы хотите, чтобы другое приложение, например, 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.

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

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

0 голосов
/ 30 декабря 2018

есть личное хранилище для каждого приложения, к которому можно получить доступ из самого приложения, а затем к общему хранилищу / 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();
        }
    }
...