`

Android的 assets和raw

 
阅读更多

    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)

现在给出具体代码显示他们的区别:

 

复制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和Raw文件夹是两个重要的资源存储区域,用于存放非编译的、原始的数据文件。这两个目录都有各自的用途和特点,开发者可以根据需求选择合适的存储位置。 **Android Assets文件** Assets...

    Android 使用MediaPlayer播放assets或者raw目录的音频文件

    Android 使用MediaPlayer播放assets或者raw目录的音频文件 https://blog.csdn.net/qq_31939617/article/details/80491552

    Android assets 和 res/raw 区别。读取本地网页,读取文本字体样式,读取视频。

    在Android应用开发中,`assets`和`res/raw`目录都是用来存储应用程序资源的重要部分,但它们之间存在一些关键区别。这两个目录都有各自的用途和访问方式,开发者需要根据实际需求来选择合适的存放位置。 首先,我们...

    android读取raw和assets下资源文件demo

    本示例“android读取raw和assets下资源文件demo”旨在教你如何在Android应用中有效地读取并处理存储在`res/raw`和`assets`目录下的资源文件。 一、res/raw目录 `res/raw`目录是Android资源系统的一部分,它允许...

    android从assets和res中读取文件.pdf

    Android从assets和res中读取文件 Android中的资源文件夹主要有两个:res和assets。res文件夹用于存放编译后的资源文件,而assets文件夹用于存放原始文件。下面我们将详细介绍这两个文件夹的作用和如何从中读取文件...

    Android 读取raw、assets中的txt文件

    下面将详细解释如何在Android中读取raw和assets目录下的txt文件。 1. **raw目录** - raw目录位于`res`文件夹下,通常用于存放音频、视频等媒体文件,但也可以存放txt文件。 - 要从raw目录读取txt文件,首先需要...

    Android 读取assets和raw文件内容实例代码

    android之文件操作——读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹)   2.创建两个txt文件,复制到asset和raw文件夹中:...

    android文件操作——读取assets和raw文件下的内容

    Android系统提供了两种特殊的方式供我们读取这些文件:assets和raw文件夹。下面将详细介绍如何读取这两个目录下的内容。 **1. 读取assets文件夹中的内容** assets文件夹位于项目的src/main/assets目录下,它允许...

    复制Raw和Assets的文件到Sdcard/Dcim

    android编程实现: 1、在res目录下建立raw...2、在您的手机相册目录下(即:DCIM目录)新建两文本文件,分别命名为a1.txt和a2.txt,并将raw目录下的a1.txt和assets目录下a2.txt文件的文本内容复制到新建的同名文件中。

    Android 中raw和assets文件夹的区别

    Android 中raw和assets文件夹的区别 Android 中的raw和assets文件夹是两个重要的资源文件夹,它们都是用于存储应用程序中的资源文件的,但是它们之间存在一些区别。本文将详细介绍raw和assets文件夹的区别,使读者...

    android 文件读取(assets)

    在Android开发中,`assets`目录是一个特殊的地方...通过以上知识,我们可以更好地理解和利用Android的`assets`目录,有效地管理应用程序中的非结构化数据。在实际开发中,正确使用`assets`能为应用带来灵活性和便利性。

    Android代码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar

    这个压缩包文件"Android代码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar"包含了几个关键的Android文件操作知识点。下面我们将详细探讨这些内容。 首先,让我们从...

    Android开发之资源目录assets与res/raw的区别分析

    本篇文章将深入探讨两个重要的资源目录:`assets`和`res/raw`,以及它们之间的差异。 首先,`assets`目录主要用于存放应用程序需要在运行时动态访问的静态文件。这些文件可以是任意类型的,如文本文件、音频文件、...

    Android播放assets文件里视频文件相关问题分析

    - Android 中raw和assets文件夹的区别 - Android API编程之Assets文件操作示例 - Android开发实现读取Assets下文件及文件写入存储卡的方法 这些文章提供了更多关于Android文件操作和多媒体处理的详细信息,帮助...

    三个特殊的资源目录 /res/xml /res/raw 和 /assets

    总结一下,/res/xml、/res/raw和/assets这三个目录在Android开发中各有其特定的用途。理解它们的区别并正确使用,有助于优化应用的性能和结构,提高开发效率。同时,合理地组织资源文件,可以使代码更加清晰,便于...

    Android-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.zip

    在Android开发中,有时我们需要对文件进行...以上就是Android中创建文件夹、将`raw`和`assets`目录中的文件保存到SD卡、解压缩文件以及删除文件的基本操作。在实际应用中,还需要考虑异常处理、权限管理等细节问题。

Global site tag (gtag.js) - Google Analytics