Asset和raw都是资源文件夹,比如可以放置数据库文件,音乐文件等等,这些文件在生成APK的时候不会被转换成二进制文件。
Asset和raw的区别:
一、Assets和res在同一个目录,但是raw在res目录下,并且只有Assets才支持建立子目录。
二、raw中的文件会被映射到R文件中,访问的时候直接使用资源ID即R.raw.*,而assets文件夹下的文件不会被映射到R.Java中,访问的时候需要使用AssetManager类;
assets: InputStream assets = getAssets().open("xxxx");
raw: InputStream raw = getResources().openRawResource(R.raw.xxxx)
raw: InputStream raw = getResources().openRawResource(R.raw.xxxx)
现在给出具体代码显示他们的区别:
复制Assets目录的数据库文件music.db到手机的data目录
private void initSQ() { String DB_PATH = "/data/data/com.yuzhiyun.perfectmusic/databases/"; String DB_NAME = "music.db"; if ((new File(DB_PATH,DB_NAME).exists()) == false) { File dir = new File(DB_PATH); if (!dir.exists()) { dir.mkdir(); } /**数据库复制到该目录*/ try { //看这里,获取输入流 InputStream is = getAssets().open(DB_NAME); OutputStream os = new FileOutputStream(DB_PATH + DB_NAME); byte[] buffer = new byte[2014]; int length; while ((length = is.read(buffer)) > 0) { os.write(buffer,0,length); } os.flush(); os.close(); is.close(); } catch (IOException e) { e.printStackTrace(); } } }
复制raw中文件到手机的data目录
if ((new File(SONGS_PATH,SONGS_NAME).exists()) == false) { File dir = new File(SONGS_PATH); if (!dir.exists()) { dir.mkdir(); } /**歌曲复制到改目录*/ try { //看这里,获取输入流 InputStream is = this.getResources().openRawResource(R.raw.a); FileOutputStream os = new FileOutputStream(SONGS_PATH + SONGS_NAME); byte[] buffer = new byte[2014]; int length; while ((length = is.read(buffer)) > 0) { os.write(buffer,0,length); } os.flush(); os.close(); is.close(); } catch (IOException e) { e.printStackTrace(); }
疑问:
Assets目录看起来功能比raw多,那为什么还需要raw,Android干嘛不直接丢弃掉它。
解答:
raw文件夹下有ID的资源文件在Android XML文件中也可以@raw/的形式引用到它(虽然我暂时没有这样用过)。在Android中,使用ID是访问一个文件最快捷的方式(为什么?我只是听人家讲的),同时,当存在子目录时候,在Assets目录下还需要一个字符串路径来获取这个目录下的文件,访问的速度会更慢。
但是最后我还是要提出一个疑问,希望看到的同学帮忙回答一下,数据库db文件到底是放assets目录好还是放raw目录好??
相关推荐
Android 中获取Assets目录下的文件和子目录下的文件,获取raw文件夹下的文件
Android 使用MediaPlayer播放assets或者raw目录的音频文件 https://blog.csdn.net/qq_31939617/article/details/80491552
Android assets 和 res/raw 区别。读取本地网页,读取文本字体样式,读取视频。
android之文件操作——读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹) 2.创建两个txt文件,复制到asset和raw文件夹中:...
本篇文章主要介绍了android文件操作——读取assets和raw文件下的内容,并附简单实例代码,需要的朋友可以参考下。
Android 读取raw、assets中的txt文件 https://blog.csdn.net/qq_31939617/article/details/80911124
android读取raw和assets下资源文件demo,运行ok,供快速掌握读取R.raw.**或者保存在assets下的文件的内容
Android 中raw和assets文件夹的区别 以下是我通过整理网上与自己的经验所得。 raw 和 assets 的相同点 它们会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式。 raw 和 assets 的不同点 1....
android编程实现: 1、在res目录下建立raw...2、在您的手机相册目录下(即:DCIM目录)新建两文本文件,分别命名为a1.txt和a2.txt,并将raw目录下的a1.txt和assets目录下a2.txt文件的文本内容复制到新建的同名文件中。
主要介绍了Android开发之资源目录assets与res/raw的区别,结合实例形式分析了Android开发中资源目录assets与res/raw的具体功能、使用方法与区别,需要的朋友可以参考下
文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar
主要介绍了读写Android中assets目录下的文件的方法详解,assets和res/raw工程目录下都可以放一些文件,这些文件将被打包到APK中应用使用,需要的朋友可以参考下
源码参考,欢迎下载
代码简单实现,可以读取raw与assets中的内容
Android高级应用源码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.zip
主要介绍了 Android raw 目录下视频的缩略图的获取的相关资料,需要的朋友可以参考下