Для использования Assets создается директория
src/main/assets
. Эта директория может содержать произвольные файлы и поддиректории. Для получения контента asset-файла используется метод Context.getAssets(), который возвращает объект класса
AssetManager
. Далее вызывается метод AssetManager.open(), который принимает имя файла и возвращает InputStream
.Если файла с заданным именем не существует, то метод
open()
бросает IOException
.Для использования Raw-ресурсов создается resource-директория
res/raw
. Эта директория подчиняется тем же правилам, что и другие ресурсы. Она может иметь квалификаторы (например -ru
), в ней нельзя создавать вложенные директории, а имена файлов должны быть в нижнем регистре.Во время компиляции для каждого raw-файла создается id в классе
R
. Для файла sound.mp3
будет создан id R.raw.sound
. Для доступа к raw-ресурсу используется метод Resources.openRawResource(), который принимает id ресурса и возвращает
InputStream
.Доступ к raw-ресурсам более эффективен и безопасен за счет статической генерации id. Также с помощью квалификаторов возможно использование разных файлов для различных конфигураций системы.
С другой стороны механизм Assets более гибкий, т.к. позволяет получать полное имя файла и создавать вложенные директории.