美文网首页Android
assets与res/raw资源目录的区别

assets与res/raw资源目录的区别

作者: 忘尘And | 来源:发表于2017-09-07 16:08 被阅读0次

*res/raw和assets的相同点:
1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。

*res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹
*读取文件资源:
1.读取res/raw下的文件资源,通过以下方式获取输入流来进行写操作
· InputStream is =getResources().openRawResource(R.id.filename);
2.读取assets下的文件资源,通过以下方式获取输入流来进行写操作
· InputStream is = getAssets().open("filename");
注意:assets 文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像 xml, java 文件被预编译,可以存放一些图片,html,js, css 等文件。

它们主要的区别:
由 于raw是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID,这个ID会被存储在R类当中,作为一个文件的引用。这意味着这个资源 文件可以很容易的被Android的类和方法访问到,甚至在Android XML文件中你也可以@raw/的形式引用到它。在Android中,使用ID是访问一个文件最快捷的方式。MP3和Ogg文件放在这个目录下是比较合适 的。
assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与 Android中的一些类和方法兼容度更低。同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目 录下会使一些操作更加方便,比方说拷贝一个数据库文件到系统内存中。要注意的是,你无法在Android XML文件中引用到assets目录下的文件,只能通过AssetManager来访问这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的。
另 外,网上关于assets和raw的资料都千篇一律了,因此关于这两者中单个文件大小不能超过1M的错误描述也在传播,即如果读取超过1M的文件 会报"Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)"的IOException,还引申出种种解决方案。个人认为不应该有这样的限制,为了验证这个说法写了个Demo,发现将近5M的压缩 包在assets和raw中都能正常访问,因此在这里纠正一下,理论上只要打包不超过Android APK 50M大小的限制都是没有问题的。当然了,不排除是Android很早期的时候因为设备硬件原因aapt在编译的时候对这两个文件夹大小做出了限制,如果 是这样,较新版的ADT应该不会出现这种情况。

相关文章

  • apk打包流程

    aapt资源编译 编译assets目录和res/raw目录下的资源 编译res目录下的资源文件 给res目录下的每...

  • A011-Raw资源

    前面的笔者介绍过了assets资源,这节课介绍的是在res目录下的raw资源,路径为res/raw。处理asset...

  • assets与res/raw资源目录的区别

    *res/raw和assets的相同点:1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进...

  • android面试题?

    1.Android 项目中 asset 目录和 res 目录有什么区别res/raw和assets的相同点:htt...

  • assets和res/raw目录区别

    相同点: 两个文件夹下的文件都不会被编译为二进制文件,都会原封不动的放到apk包中。 不同点 assets内可以有...

  • Android Resources之assets

    Assets资源 assets/和res/raw目录 相同之处 两者目录下的文件在打包后会原封不动的保存在apk包...

  • Android的资源文件介绍

    【库】res/raw与assets区别:http://blog.csdn.net/chdjj/article/de...

  • Android Studio增加assets目录、raw目录

    assets与res/raw不同 assets目录是Android的一种特殊目录,用于放置APP所需的固定文件,且...

  • assets目录和res/raw目录的区别

    项目中,欢迎页背景为视频,就视频文件到底放在哪个地方这一问题,跟同事观点有些不合,查阅相关资料,在此记录。网上关于...

  • assets与res/raw的区别

    src/main/assets vs src/main/res/raw 的相同点与不同点 相同点都不会被编译成二进...

网友评论

    本文标题:assets与res/raw资源目录的区别

    本文链接:https://www.haomeiwen.com/subject/udabjxtx.html