Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Внутреннее хранилище

2-й курс/Закрытая зона

Метод getFilesDir() - где мы
Куда записать файл?
Метод openFileOutput() - Сохраняем файл
Метод fileList() - Получаем список сохранённых файлов
Метод openFileInput() - Открываем файл для чтения
Метод deleteFile() - Удаляем файл
Метод getCacheDir() - Кэш для временных файлов
Сохраняем drawable из ресурсов в файл внутреннего хранилища (Kotlin)

Android использует файловую систему, основанную на Linux. Файлы хранятся в энергонезависимой флеш-памяти, встроенной в устройство, поэтому они не теряются, когда телефон выключают. Также многие устройства поддерживают встроенную и внешние карточки памяти.

Есть два варианта работы с файлами. Первый - это стандартные методы, принятые в Java, которые можно использовать, например, для работы с файлами и папками на внешнем накопителе. Это стандартные функции ввода/вывода из Java (пакет java.io).

Также существуют специальные Android-версии методов с файлами, которые относятся к отдельным приложениям. Необходимо помнить, что доступ к файлам приложений ограничен, чтобы вы не могли вносить беспорядок в данные других приложений. Механизм доступа определяется политикой внутреннего хранилища.

Понятие внутреннего хранилища вызывает путаницу как у пользователей, так и у разработчиков. Это связано с эволюцией операционной системы. Попробуем разобраться.

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

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

У класса android.os.Environment есть методы для работы с папками и файлами. Все методы возвращают тип File, который может быть как файлом, так и папкой. Чтобы понять, с чем мы имеем дело, нужно вызвать метод isFile() или isDirectory() класса File.

Класс Environment имеет несколько удобных методов для чтения стандартных папок Android:

  • getDataDirectory() - папка для хранения данных
  • getDownloadCachedDirectory() - папка для хранения загружаемых внешних файлов и кэша
  • getRootDirectory() - корневая папка файловой системы Android

На практике, вам практически не придётся использовать эти методы. Также есть методы, связанные с внешним хранилищем, о которых поговорим в других статьях.

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

Дополнительные материалы

Работа с файлами в Compose

Реклама