转载见http://limssb.blog.163.com/blog/static/14730437201211255751716/
内容见:
概要:
- raw资源和assets资源在打apk包时保持不变,不会被编译成二进制文件。
- raw资源会被编译到R类中,生成相应的ID 而 assets不会。
- assets 支持文件夹,而raw不支持。
读取:
- raw资源:
任何文件都能以原始形态保持在raw文件夹下,通过 InputStream 类的Resources.openRawResource()
方法进行访问,其参数为 R.raw.filename :
InputStream is = context.getResources().openRawResource(R.id.filename);
- assets资源:
AssetManager am = null; am = getAssets(); InputStream is = am.open("filename");
获取资源列表:
- raw资源:
通过反射的方式得到R.java里面raw内部类里面所有的资源ID的名称,然后列出所有资源变量。
- assets 资源:
通过 getAssets().list("") 来获取assets目录下所有文件夹和文件的名称,再通过这些名称再读取我们想要的文件。
如果要列出 " assets/subDir " 目录中的资源文件则代码如下:try { final String[] fNames = context.getAssets().list(""); for (String name : fNames) { LogX.e("getAssets().list() : " + name); } } catch (IOException e) { e.printStackTrace(); }
try {
final String[] fNames = context.getAssets().list("subDir");for (String name : fNames) {
LogX.e("getAssets().list() : " + name);
}
} catch (IOException e) {
e.printStackTrace();
}