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());
10. }
assetmanager.list("") 将列出assets下的所有文件和文件夹,以及文件下的内容
assetmanager.list("assets")将列出noting,没错,就是什么也没有
Assetmanager.list("/")
注意的问题:
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