Список файлов android studio

Assets (Активы)

В Android имеется ещё один каталог, в котором могут храниться файлы, предназначенные для включения в пакет — assets. Этот каталог находится на том же уровне, что и res. Для файлов, располагающихся в assets, в R.java не генерируются идентификаторы ресурсов. Для их считывания необходимо указать путь к файлу. Путь к файлу является относительным и начинается с /assets. Этот каталог, в отличие от подкаталога res, позволяет задавать произвольную глубину подкаталогов и произвольные имена файлов и подкаталогов.

По умолчанию проект в студии не содержит данную папку. Чтобы её создать, выберите меню File | New | Folder | Assets Folder.

Чтение файлов

Для доступа к файлам используется класс AssetManager. Пример для чтения текстового файла.

Сначала на Kotlin.

Для доступа к графическому файлу из актива можно использовать следующий код:

Вы также можете загрузить изображение в Bitmap, используя BitmapFactory.decodeStream(), вместо Drawable.

Функция-расширение для Kotlin, которая вернёт Bitmap.

Используем собственные шрифты

Напишем практический пример создания приложения, в котором будут использоваться собственные шрифты, не входящие в стандартную библиотеку шрифтов Android. Для этого мы упакуем нужные шрифты вместе с приложением. Поместим в каталог assets/fonts файлы шрифтов (можно скачать бесплатные шрифты с сайтов 1001 Free Fonts или Urban Fonts ).

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

В классе активности загрузим объект EditText из ресурсов, а затем создадим объект Typeface, используя вызов статического метода Typeface.createFromAsset(). Метод createFromAsset() принимает два параметра:

  • объект AssetManager, который можно получить вызовом метода getAssets()
  • путь к файлу актива.

Например, загрузить шрифт для текстового поля EditText можно следующим способом:

Запустив проект, мы увидим в текстовых полях надписи Happy New Year! и Meow!, выводимые нашими собственными шрифтами.

Пример для фрагмента.

Загрузка локальных файлов из активов в WebView

Если нужно загрузить локальные страницы и изображения из активов в WebView, то можно использовать префикс file://android_asset. Подробнее смотрите в статье про WebView.

Получаем список файлов в папке assets

Можно получить список файлов, которые находятся в папке assets. Для быстрой проверки кода я вручную скопировал в папку два файла:

Кроме ваших файлов, также возвращаются странные папки /images, /sounds, /webkit. Учитывайте это в своих проектах. Так как в папке можно создавать собственные подпапки, то можно воспользоваться вспомогательным методом:

Ограничение на размер файлов

По сети гуляет информация, что существует ограничение в 1 Мб на размер файлов в папке assets. При превышении размера у вас может появиться ошибка:

Я не сталкивался, поэтому рецепт решения проблемы не предлагаю.

Источник

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

Чтение и сохранение файлов

Работа с настройками уровня 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 пропишем обработчики кнопок с сохранением и чтением файла:

При нажатии на кнопку сохранения будет создаваться поток вывода FileOutputStream fos = openFileOutput(FILE_NAME, MODE_PRIVATE)

В данном случае введенный текст будет сохраняться в файл «content.txt». При этом будет использоваться режим MODE_PRIVATE

Система позволяет создавать файлы с двумя разными режимами:

MODE_PRIVATE : файлы могут быть доступны только владельцу приложения (режим по умолчанию)

MODE_APPEND : данные могут быть добавлены в конец файла

Поэтому в данном случае если файл «content.txt» уже существует, то он будет перезаписан. Если же нам надо было дописать файл, тогда надо было бы использовать режим MODE_APPEND:

Для чтения файла применяется поток ввода FileInputStream :

Подробнее про использование потоков ввода-вывода можно прочитать в руководстве по 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 мы сможем найти сохраненный файл.

Источник

Андроид, как я могу получить список всех файлов в папке?

мне нужно имя (строка) всех файлов в res/raw/

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

Update: Спасибо за все отличные ответы. Похоже, что некоторые из них работают,но только наполовину. Возможно, более подробное описание будет помощи

Я хочу получить все mp3-файлы в папке raw, чтобы я мог получить все имена, а затем добавить их в URI для воспроизведения случайного MP3 следующим образом.

когда я поставил » Деннис.mp3 » в папку assets, он появляется, как и ожидалось, однако, используя приведенный выше код, я больше не могу получить доступ к этому MP3, если нет чего-то вроде:

6 ответов

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

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

Читайте также:  Арабская клавиатура для андроид

Это тот же int, который вы получите, обратившись к Р. сырыми.whateveryounamedtheresource

этот код будет извлекать все файлы из «Нового Foder» sdCard.

а также убедитесь, что добавить Android sd карты разрешение на запись в манифесте.xml-файл

мне нужно имя (строка) всех файлов в res/raw/

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

но на самом деле не помогает мне узнать, где существует папка raw.

как папка, она существует только на ваша машина разработки. Это не папка на устройстве.

насколько я помню, у вас будет список с (просто попробуйте разные пути):

Источник

Android, как я могу получить список всех файлов в папке?

Мне нужно имя (String) всех файлов в res / raw /

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

Обновление: Спасибо за все замечательные ответы. Похоже, что некоторые из них работают, но только получают меня на полпути. Возможно, более подробное описание поможет …

Я хочу получить все mp3-файлы в исходной папке, чтобы я мог получить все имена, а затем добавить их в URI, чтобы воспроизвести случайный MP3 следующим образом …

Когда я помещаю «dennis.mp3» в папку с ресурсами, он отображается как ожидалось … однако, используя вышеприведенный код, я больше не могу получить доступ к этому MP3 … если не существует чего-то вроде строки:

Еще раз спасибо за полезные ответы.

Чтобы перечислить все имена ваших исходных активов, которые в основном являются именами файлов с отключенными расширениями, вы можете сделать это:

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

Это тот же int, который вы получите, обратившись к R.raw.whateveryounamedtheresource

Этот код будет извлекать все файлы из «New Foder» sdCard.

А также обязательно добавьте разрешение на запись в android sd card в файл manifest.xml

Мне нужно имя (String) всех файлов в res / raw /

Нет файлов в res/raw/ на устройстве. Это ресурсы. Нет никакого хорошего способа перебора ресурсов, кроме как с помощью отражения для итерации по статическим членам R.raw класса R.raw чтобы получить различные идентификационные имена и значения.

Но на самом деле не помогает мне узнать, где находится необработанная папка.

Как папка, она существует только на вашей машине разработки. Это не папка на устройстве.

Вы можете использовать AssetManager :

Насколько я помню, у вас будет список (просто попробуйте разные пути):

Посмотрите http://developer.android.com/reference/android/content/res/Resources.html. Обычно вы можете получить экземпляр ресурсов, связанный с вашим приложением, с помощью функции getResources ().

Класс ресурсов предоставляет доступ к http://developer.android.com/reference/android/content/res/AssetManager.html (см. Метод getAssets ()). И, наконец, получите доступ к вашим упакованным файлам (apk) с помощью метода AssetManager.list (). Наслаждайтесь!

Из Context вы можете вызвать что-то вроде этого:

Источник

Полный список

— работаем с файлами

Работа с файлами в Android не сильно отличается от таковой в Java. В этом уроке рассмотрим, как записать/прочесть файл во внутреннюю память и на SD-карту.

Читайте также:  Впн для андроида зайчик

Project name: P0751_Files
Build Target: Android 2.3.3
Application name: Files
Package name: ru.startandroid.develop.p0751files
Create Activity: MainActivity

Рисуем экран main.xml:

4 кнопки, смысл которых понятен по тексту на них.

В onclick обрабатываем нажатия 4-х кнопок и вызываем соответствующие методы.

writeFile – запись файла во внутреннюю память. Используется метод openFileOutput, который на вход берет имя файла и режим записи: MODE_PRIVATE – файл доступен только этому приложению, MODE_WORLD_READABLE – файл доступен для чтения всем, MODE_WORLD_WRITEABLE — файл доступен для записи всем, MODE_APPEND – файл будет дописан, а не начат заново.

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

writeFileSD – запись файла на SD. Используем метод getExternalStorageState для получения состояния SD-карты. Здесь можно посмотреть какие бывают состояния. Нам нужно MEDIA_MOUNTED – когда SD-карта вставлена и готова к работе. Далее мы получаем путь к SD-карте (метод getExternalStorageDirectory), добавляем свой каталог и имя файла, создаем каталог и пишем данные в файл.

readFileSD – чтение файла с SD. Все аналогично предыдущему методу, только файл не пишем, а читаем.

Осталось в манифест добавить разрешение на работу с файлами на SD — android.permission.WRITE_EXTERNAL_STORAGE.

Все сохраним и запустим. Видим экран с 4-мя кнопками:

Внутренняя память

Жмем кнопку Записать файл. Видим в логе:

Проверим. Идем в File Explorer (Window > Show View > Other > Android > File Explorer) и открываем там папку data/data/ru.startandroid.develop.p0751files/files и видим там наш файл file.

Возвращаемся в эмулятор. Жмем Прочесть файл и в логе видим:

Это тот текст, который мы записывали в файл.

SD карта

Теперь жмем Записать файл на SD.

Файл записан на SD: /mnt/sdcard/MyFiles/fileSD

Проверяем. Идем в FileExplorer и открываем там папку mnt/sdcard/MyFiles/ а в ней файл fileSD.

Возвращаемся в эмулятор и жмем кнопку Прочесть файл с SD. В логе видим:

Содержимое файла на SD

Этот текст мы и записывали.

mnt/sdcard — обычно этот путь ведет к содержимому SD-карты. Возможно у вас он будет другой.

В общем, при работе с файлами на SD вы используете стандартные java механизмы. А при работе с внутренним хранилищем для удобства можно использовать методы-оболочки от Activity:

openFileOutput – открыть файл на запись

openFileInput – открыть файл на чтение

И есть метод getFilesDir – возвращает объект File, соответствующий каталогу для файлов вашей программы. Используйте его, чтобы работать напрямую, без методов-оболочек.

Подробности работы в java с файловой системой я здесь описывать не буду. На нашем форуме пользователь SKR сделал отличную памятку по работе с файлами. Скорее всего, вы найдете там все что нужно.

Если у вас проверка SD-карты показывает, что карта недоступна (см. лог), то убедитесь в свойствах AVD, что у вас для SDCard указан Size или File. Если указаны, то попробуйте перезапустить AVD.

На следующем уроке:

— создаем экран с вкладками
— используем иконку в названии вкладки
— используем обработчик перехода между вкладками

Присоединяйтесь к нам в Telegram:

— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.

— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Источник

Оцените статью