1.res/raw存放运行时想使用的原始文件(文件不被处理成二进制形式)



2.assets 文件处理成二进制形式)

raw下文件访问:(子文件夹中的内容访问不到)通过Resource,并提供资源ID访问

使用方式:InputStream is=context.getResources().openRawResource(R.id.finleName);

assets下文件访问: (子文件夹中的内容可以访问,文件路径相对于assets文件夹的路径)通过AssetManager来访问。

使用方式:InputStream is = context.getAssets().open("config/ui.txt");  //实际路径  /assets/config/ui.txt


Assets目录下的文件的列举


android 获取raw文件数据 android raw文件夹_数据库






1. try { 
2. temp=assmgr.list("");//列出asset下的文件 
3.     for(String s:temp){ 
4.         Log.i("data", s); 
5.     } 
6. } catch (IOException e) { 
7.     // TODO Auto-generated catch block 
8.     e.printStackTrace(); 
9.     Log.i("data",e.toString()); 
10. }

assetmanager.list("") 将列出assets下的所有文件和文件夹,以及文件下的内容

android 获取raw文件数据 android raw文件夹_数据库_02


assetmanager.list("assets")将列出noting,没错,就是什么也没有


Assetmanager.list("/")

android 获取raw文件数据 android raw文件夹_ui_03


注意的问题:


1.资源文件只能以InputStream方式读取

2.所有资源文件都是只读的,运行时无法修改

3.所有资源文件夹assets、res也都是只读的,不可写入,Apk在编译后无法修改

4.如果想对资源文件进行修改,可对文件进行copy建立temp(临时文件),对临时文件进行修改,再使用,用到了java Io流的方法 File.createTempFile();

5.对于资源文件大小限制的说明Android系统对资源文件(res/raw和assets文件夹下)的大小有限制,2.3之前默认最大仅支持1M的文件,2.3之后貌似<=10M

6.目前自己开发用到的及时内置数据库,如果你的应用中较大的数据需要使用,由于在应用加载是去下载数据会很耗时,可以使用内置数据库的方法。


转载于:https://blog.51cto.com/vincenttung/1143715