Как создать в Android приложении файл txt , доступный для всех, видимый в эксплорере, с возможностью скопировать и т д?
Подскажите, уважаемые,
Как создать файл txt из приложения на Android для общего доступа, чтобы его было видно другим приложениям, можно было редактировать любым редактором, скопировать на внешний носитель, переслать и т д. Я очень начинающий в Android, и пример очень поможет, необходимый функционал:
приложение пишет файлы txt, потом их можно в этом же приложении посмотреть, выбрать, загрузить.
И чтобы эти файлы были видны в других приложениях.
Спасибо!
Отслеживать
11.7k 3 3 золотых знака 24 24 серебряных знака 33 33 бронзовых знака
задан 11 ноя 2022 в 5:54
Нужно запросить у пользователя выбор файла, полученный Uri использовать для редактирования. Подробнее в офф. тренинге: developer.android.com/training/data-storage/shared/….
11 ноя 2022 в 6:36
Я получил uri , но не знаю , как прочитать содержимое файла. Можно пример?
11 ноя 2022 в 12:01
Там же есть пример чтения текста: developer.android.com/training/data-storage/shared/…
11 ноя 2022 в 13:25
Да, я не дочитал. Попробовал, но он читает только чужие файлы из видео, аудио и т д. А файл, который я записал в созданную с desktop-а папку, не читает. Если не затруднит, как мне решить мою задачу? Из моего приложения сохранять и загружать обратно текстовые файлы с их выбором через проводник, и чтобы их можно было забирать с телефона на другие устройства.
11 ноя 2022 в 14:06
Если что-то не получается — опишите в вопросе подробнее что, приложите код, укажите желаемый и актуальный результат, тексты возникающих ошибок. По заголовкам в тренинге: Create a new file — создаём, Edit a document — записываем контент, Open a document — открываем для чтения (просим юзера выбрать). С созданными/ранее открытыми файлами можно работать по полученным при этом Uri , для этого их можно сохранить в текстовом виде в преференсы, БД или любой другой приватный файл. Чтобы избежать потери доступа к файлу через Uri после перезагрузки аппарата: Persist permissions
Работа с файловой системой
Работа с настройками уровня activity и приложения позволяет сохранить небольшие данные отдельных типов (string, int), но для работы с большими массивами данных, такими как графически файлы, файлы мультимедиа и т.д., нам придется обращаться к файловой системе.
ОС Android построена на основе Linux. Этот факт находит свое отражение в работе с файлами. Так, в путях к файлам в качестве разграничителя в Linux использует слеш «/», а не обратный слеш «\» (как в Windows). А все названия файлов и каталогов являются регистрозависимыми, то есть «data» это не то же самое, что и «Data».
Приложение Android сохраняет свои данные в каталоге /data/data// и, как правило, относительно этого каталога будет идти работа.
Для работы с файлами абстрактный класс android.content.Context определяет ряд методов:
- boolean deleteFile (String name) : удаляет определенный файл
- String[] fileList () : получает все файлы, которые содержатся в подкаталоге /files в каталоге приложения
- File getCacheDir() : получает ссылку на подкаталог cache в каталоге приложения
- File getDir(String dirName, int mode) : получает ссылку на подкаталог в каталоге приложения, если такого подкаталога нет, то он создается
- File getExternalCacheDir() : получает ссылку на папку /cache внешней файловой системы устройства
- File getExternalFilesDir(String type) : получает ссылку на каталог /files внешней файловой системы устройства
- File getFileStreamPath(String filename) : возвращает абсолютный путь к файлу в файловой системе
- FileInputStream openFileInput(String filename) : открывает файл для чтения
- FileOutputStream openFileOutput (String name, int mode) : открывает файл для записи
Все файлы, которые создаются и редактируются в приложении, как правило, хранятся в подкаталоге /files в каталоге приложения.
Для непосредственного чтения и записи файлов применяются также стандартные классы Java из пакета java.io.
Итак, применим функционал чтения-записи файлов в приложении. Пусть у нас будет следующая примитивная разметка layout:
Поле EditText предназначено для ввода текста, а TextView — для вывода ранее сохраненного текста. Для сохранения и восстановления текста добавлены две кнопки.
Теперь в коде Activity пропишем обработчики кнопок с сохранением и чтением файла:
package com.example.filesapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class MainActivity extends AppCompatActivity < private final static String FILE_NAME = "content.txt"; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); >// сохранение файла public void saveText(View view) < FileOutputStream fos = null; try < EditText textBox = findViewById(R.id.editor); String text = textBox.getText().toString(); fos = openFileOutput(FILE_NAME, MODE_PRIVATE); fos.write(text.getBytes()); Toast.makeText(this, "Файл сохранен", Toast.LENGTH_SHORT).show(); >catch(IOException ex) < Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show(); >finally < try< if(fos!=null) fos.close(); >catch(IOException ex) < Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show(); >> > // открытие файла public void openText(View view) < FileInputStream fin = null; TextView textView = findViewById(R.id.text); try < fin = openFileInput(FILE_NAME); byte[] bytes = new byte[fin.available()]; fin.read(bytes); String text = new String (bytes); textView.setText(text); >catch(IOException ex) < Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show(); >finally < try< if(fin!=null) fin.close(); >catch(IOException ex) < Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show(); >> > >
При нажатии на кнопку сохранения будет создаваться поток вывода FileOutputStream fos = openFileOutput(FILE_NAME, MODE_PRIVATE)
В данном случае введенный текст будет сохраняться в файл «content.txt». При этом будет использоваться режим MODE_PRIVATE
Система позволяет создавать файлы с двумя разными режимами:
- MODE_PRIVATE : файлы могут быть доступны только владельцу приложения (режим по умолчанию)
- MODE_APPEND : данные могут быть добавлены в конец файла
Поэтому в данном случае если файл «content.txt» уже существует, то он будет перезаписан. Если же нам надо было дописать файл, тогда надо было бы использовать режим MODE_APPEND:
FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
Для чтения файла применяется поток ввода FileInputStream :
FileInputStream fin = openFileInput(FILE_NAME);
Подробнее про использование потоков ввода-вывода можно прочитать в руководстве по Java: https://metanit.com/java/tutorial/6.3.php
В итоге после нажатия кнопки сохранения весь текст будет сохранен в файле /data/data/название_пакета/files/content.txt

Где физически находится созданный файл? Чтобы увидеть его на подключенном устройстве перейдем в Android Stud в меню к пункту View -> Tool Windows -> Device File Explorer

После этого откроектся окно Device File Explorer для просмотра файловой системы устройства. И в папке data/data/[название_пакета_приложения]/files мы сможем найти сохраненный файл.
Word для телефонов с Android: анимированные советы
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Вы можете бесплатно скачать Word для телефонов с Android из Google Play. После установки приложения воспользуйтесь полезными советами по работе с ним в анимированном руководстве.
Где находятся вкладки ленты? Как редактировать документы?

Нужно отредактировать файл или найти кнопку? Сначала войдите и откройте файл. Затем коснитесь кнопки Показать ленту и выберите вкладку Главная.
Закрытие клавиатуры
Клавиатура перекрывает экран? Нажмите кнопку Назад на телефоне. Обратите внимание, что кнопка «Назад» может выглядеть немного иначе, чем показано в этом руководстве.
Не получается ввести тест? Скройте ленту.
Если вы хотите ввести текст, сначала скройте ленту. Совет. Скрыть ленту можно также с помощью кнопки Назад на телефоне.
Перемещение курсора

Коснитесь любого места в тексте (не обязательно там, где нужно). Затем нажмите и удерживайте синий маркер и перетащите курсор в нужное место.
Выделение слов и абзацев
Чтобы выделить слово, коснитесь его дважды. Абзац или строка выделяются тройным нажатием.
Удобное чтение и редактирование

Коснитесь кнопки представление для мобильных устройств, чтобы просмотреть документ, оптимизированный для вашего телефона. Когда вы закончите, вы сможете посмотреть, как будет выглядеть печать, нажав кнопку Разметка страницы .
Дополнительные материалы
У нас есть еще три анимированных руководства для телефонов с Android:
- Установка и настройка Office в Android
- Excel для телефонов с Android: анимированные советы
- PowerPoint для телефонов с Android: анимированные советы
Какие файлы можно открывать для предпросмотра в мобильном приложении Dropbox?
Все файлы, форматы которых поддерживает ваше устройство, можно открыть для предпросмотра в приложении Dropbox. Для файлов других форматов Dropbox автоматически подберет подходящее приложение для просмотра. Если же приложение, поддерживающее нужный формат файлов, не найдено, вам понадобится его установить. Посмотрите список форматов, которые можно открывать для предпросмотра на сайте dropbox.com.
Виды презентаций, доступных для предварительного просмотра
Файлы презентаций со следующими расширениями будут отображаться в режиме предпросмотра.
| .key † | .pot† | .potm† | .ppt | .pptx | .pptm |
| .pps | .ppsm | .ppsx |
Виды изображений, доступных для предварительного просмотра
Файлы изображений со следующими расширениями будут отображаться в режиме предпросмотра.
| .ai | .arw | .bmp | .cr2 | .crw | .dng |
| .gif | .jpeg* | .jpg | .nef | .nrw | .orf |
| .png | .psd | .tif | .tiff | .sr2 | .svg |
| .svgz† |
Виды видеофайлов, доступных для предварительного просмотра
Видеофайлы со следующими расширениями будут отображаться в режиме предпросмотра.
| .3gp | .3gpp | .3gpp2 | .asf | .avi | .dv |
| .flv | .m2t | .m4v | .mkv | .mov | .mp4 |
| .mpeg | .mpg | .mts | .oggtheora | .ogv | .rm |
| .ts | .vob | .webm | .wmv |
Виды аудиофайлов, доступных для предварительного просмотра
Аудиофайлы со следующими расширениями будут отображаться в режиме предпросмотра.
| .aac | .aif† | .aiff† | .flac | .m4a | .mp3 |
| .oga* | .wav* | .wma |
Виды текстовых файлов, доступных для предварительного просмотра
Текстовые файлы со следующими расширениями будут отображаться в режиме предпросмотра.