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目录下的文件的列举


 
   
  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()); 

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

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

Assetmanager.list("/")

注意的问题:

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

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

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

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

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

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