android下raw目录的作用,Android 之 assets目录和raw目录

Android 中存在assets目录和raw目录,它们既有相似之处又有所不同。

一、共同点:

目录下的资源会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式。

二、区别

1、最直观的就是获取它们的 InputStream 的API不一样。

获取assets资源:InputStream assets = getAssets().open("xxxx");

获取raw资源:InputStream raw = getResources().openRawResource(R.raw.xxxx)

2、assets 下可以创建目录结构,而 res/raw 不可以。

3、assets 能够动态的列出assets中的所有资源 getAssets().list(String path); ,而 res/raw 不可以。

下面来说说它们主要的区别:

由于 raw 是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID,这个ID会被存储在R类当中,作为一个文件的引用。这意味着这个资源 文件可以很容易的被Android的类和方法访问到,甚至在Android XML文件中你也可以@raw/的形式引用到它。在Android中,使用ID是访问一个文件最快捷的方式。MP3和Ogg文件放在这个目录下是比较合适 的。

assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与 Android中的一些类和方法兼容度更低。同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目 录下会使一些操作更加方

你可能感兴趣的:(android下raw目录的作用,Android 之 assets目录和raw目录)