В Android имеется каталог, в котором могут храниться файлы, предназначенные для включения в пакет - assets
. Этот каталог находится на том же уровне, что и res
. Для файлов, располагающихся в assets
, в R.java
не генерируются идентификаторы ресурсов. Для их считывания необходимо указать путь к файлу. Путь к файлу является относительным и начинается с /assets
. Этот каталог, в отличие от подкаталога res
, позволяет задавать произвольную глубину подкаталогов и произвольные имена файлов и подкаталогов.
Для доступа к файлам Assets используется класс AssetManager
. Пример для чтения текстового файла:
String getStringFromAssetFile(Activity activity)
{
AssetManager am = activity.getAssets();
InputStream is = am.open("test.txt");
String s = convertStreamToString(is);
is.close();
return s;
}
Другой способ:
String text = filename;
byte[] buffer = null;
InputStream is;
try {
is = getAssets().open(text);
int size = is.available();
buffer = new byte[size];
is.read(buffer);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
String str_data = new String(buffer);
return str_data;
Для доступа к графическому файлу можно использовать следующий код:
public void loadImageFromAsset() {
try {
// получаем входной поток
InputStream ims = getAssets().open("cat.jpg");
// загружаем как Drawable
Drawable d = Drawable.createFromStream(ims, null);
// выводим картинку в ImageView
mImage.setImageDrawable(d);
}
catch(IOException ex) {
return;
}
}
Ресурсы | Layout |