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 Assets文件** Assets...
Android 使用MediaPlayer播放assets或者raw目录的音频文件 https://blog.csdn.net/qq_31939617/article/details/80491552
在Android应用开发中,`assets`和`res/raw`目录都是用来存储应用程序资源的重要部分,但它们之间存在一些关键区别。这两个目录都有各自的用途和访问方式,开发者需要根据实际需求来选择合适的存放位置。 首先,我们...
本示例“android读取raw和assets下资源文件demo”旨在教你如何在Android应用中有效地读取并处理存储在`res/raw`和`assets`目录下的资源文件。 一、res/raw目录 `res/raw`目录是Android资源系统的一部分,它允许...
Android从assets和res中读取文件 Android中的资源文件夹主要有两个:res和assets。res文件夹用于存放编译后的资源文件,而assets文件夹用于存放原始文件。下面我们将详细介绍这两个文件夹的作用和如何从中读取文件...
下面将详细解释如何在Android中读取raw和assets目录下的txt文件。 1. **raw目录** - raw目录位于`res`文件夹下,通常用于存放音频、视频等媒体文件,但也可以存放txt文件。 - 要从raw目录读取txt文件,首先需要...
android之文件操作——读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹) 2.创建两个txt文件,复制到asset和raw文件夹中:...
Android系统提供了两种特殊的方式供我们读取这些文件:assets和raw文件夹。下面将详细介绍如何读取这两个目录下的内容。 **1. 读取assets文件夹中的内容** assets文件夹位于项目的src/main/assets目录下,它允许...
android编程实现: 1、在res目录下建立raw...2、在您的手机相册目录下(即:DCIM目录)新建两文本文件,分别命名为a1.txt和a2.txt,并将raw目录下的a1.txt和assets目录下a2.txt文件的文本内容复制到新建的同名文件中。
Android 中raw和assets文件夹的区别 Android 中的raw和assets文件夹是两个重要的资源文件夹,它们都是用于存储应用程序中的资源文件的,但是它们之间存在一些区别。本文将详细介绍raw和assets文件夹的区别,使读者...
在Android开发中,`assets`目录是一个特殊的地方...通过以上知识,我们可以更好地理解和利用Android的`assets`目录,有效地管理应用程序中的非结构化数据。在实际开发中,正确使用`assets`能为应用带来灵活性和便利性。
这个压缩包文件"Android代码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar"包含了几个关键的Android文件操作知识点。下面我们将详细探讨这些内容。 首先,让我们从...
本篇文章将深入探讨两个重要的资源目录:`assets`和`res/raw`,以及它们之间的差异。 首先,`assets`目录主要用于存放应用程序需要在运行时动态访问的静态文件。这些文件可以是任意类型的,如文本文件、音频文件、...
- Android 中raw和assets文件夹的区别 - Android API编程之Assets文件操作示例 - Android开发实现读取Assets下文件及文件写入存储卡的方法 这些文章提供了更多关于Android文件操作和多媒体处理的详细信息,帮助...
总结一下,/res/xml、/res/raw和/assets这三个目录在Android开发中各有其特定的用途。理解它们的区别并正确使用,有助于优化应用的性能和结构,提高开发效率。同时,合理地组织资源文件,可以使代码更加清晰,便于...
在Android开发中,有时我们需要对文件进行...以上就是Android中创建文件夹、将`raw`和`assets`目录中的文件保存到SD卡、解压缩文件以及删除文件的基本操作。在实际应用中,还需要考虑异常处理、权限管理等细节问题。