Android 中raw和assets文件夹的区别

Android 中raw和assets文件夹的区别

以下是我通过整理网上与自己的经验所得。

raw 和 assets 的相同点

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

raw 和 assets 的不同点

1.它们在代码中的不同方式 :

assets:

InputStream assets = getAssets().open("xxxx");

raw:

InputStream raw = getResources().openRawResource(R.raw.xxxx)

assets下可以创建目录结构,还能够动态的列出assets中的所有资源(getAssets().list(String path);),raw文件目录下不行

raw 文件夹下的的会资源生成一个资源id,assets文件下的资源不会

raw 和 assets 的使用场景

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

2.assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与Android中的一些类和方法兼容度更低。同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目录下会使一些操作更加方便,比方说拷贝一个数据库文件到系统内存中。要注意的是,你无法在Android XML文件中引用到assets目录下的文件,只能通过AssetManager来访问这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2024-09-30 21:01:37

Android 中raw和assets文件夹的区别的相关文章

求解答-android中如何让assets文件夹下的文件显示在Listview中?

问题描述 android中如何让assets文件夹下的文件显示在Listview中? android中如何让assets文件夹下的文件显示在Listview中? 怎么做啊? 求各位大神的源码 谢谢 解决方案 String filenames[] = getResources().getAssets().list(""); 解决方案二: String filenames[] = getResources().getAssets().list(""); 确实能获取到图片

Android获取assets文件夹中的数据并写入SD卡示例_Android

本文示例主要实现了Android获取assets文件夹中的数据并将其写入到SD卡中,该程序实现的步骤主要为:首先读取assets文件夹中的数据库,再将其写入到SD存储卡中. 完整示例代码如下: import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; /*将assets文件

Android获取assets文件夹中的数据并写入SD卡示例

本文示例主要实现了Android获取assets文件夹中的数据并将其写入到SD卡中,该程序实现的步骤主要为:首先读取assets文件夹中的数据库,再将其写入到SD存储卡中. 完整示例代码如下: import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; /*将assets文件

Android中asset文件夹与raw文件夹的区别深入解析_Android

*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.读取

Android中asset文件夹与raw文件夹的区别深入解析

*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.读

android studio引用assets文件夹里的东西路径怎么写

问题描述 android studio引用assets文件夹里的东西路径怎么写 在eclipse中路径是file:///android_asset/kaka.swf,在android studio中assets是新建出来的,也是这样引用么? 解决方案 1.目录问题 在Eclispe中,这个目录的位置在res/下面,但到了Android Studio中,这个assets目录必须放在跟java和res同级目录下 2.读取的方法 context.getClass().getClassLoader().

android源码中的values-sw580的文件夹

问题描述 android源码中的values-sw580的文件夹 在看android联系人的源码时发现有values-sw580这样的文件夹,不知道这样的文件夹是干嘛的?还有这个文件夹的名字是如何来定义的? 解决方案 res/下文件夹的命名是这样的,名称分为两部分{作用}[-{适用条件}*]如:values/values-land/values-sw600dp/values-sw600dp-land/等, LZ看到的values-sw580dp这个文件夹,首先它里面放的是value,其实,它只有

audio-在一行中保存音频文件或者把 assets 文件夹保存到 sdcard 中

问题描述 在一行中保存音频文件或者把 assets 文件夹保存到 sdcard 中 在 assets 文件夹中有一个 audio 文件,我需要把相同的文件保存到 sdcard 中,如何实现?我用下面的代码来保存文件: String filename = ""filename.txt"";File file = new File(Environment.getExternalStorageDirectory() filename);FileOutputStream f

android assets文件夹资源的访问

1.assets文件夹里面的文件都是保持原始的文件格式 . 2.assets中的文件只可以读取而不能进行写的操作. 3.assets目录下的资源文件不会在R.java自动生成ID,所以读取assets目录下的文件必须指定文件的路径. 4.assets则可以有目录结构,也就是assets目录下可以再建立文件夹.   5.读取assets 目录下的文件 AssetManager assetManager = getAssets() ; InputStream inputStream = assetM