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来访问这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
读写Android中assets目录下的文件的方法详解
Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可: 第二种是assets目录下存放的原生资源文件: 因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们.那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset/r
-
android文件操作——读取assets和raw文件下的内容
来自Resources和Assets 中的文件只可以读取而不能进行写的操作. assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. 1. 先在Activity里面调用getAssets() 来获取AssetManager引用. 2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream. 3. 然后就是用已经open fi
-
Android 加载assets中的资源文件实例代码
Android 加载assets资源 在android中,如何加载assets目录下的文件夹呢?方法很简单,使用 AssetManager, 即 AssetManager assetManager = getAssets(); 例子如下: AssetManager assetManager = getAssets(); try { String[] files = assetManager.list("Files"); for(int i=0; i<FILES.LENGTH; {
-
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编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法
本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法.分享给大家供大家参考,具体如下: private void CopyAssets(String assetDir, String dir) { String[] files; try { // 获得Assets一共有几多文件 files = this.getResources().getAssets().list(assetDir); } catch (IOException e1) { ret
-
基于android中读取assets目录下a.txt文件并进行解析的深入分析
android读取assets文件下的内容,一般都是使用getAsset.open()方法,并将文件的路径作为参数传入,而当我们解析一个目录下的文件时需要对其进行解析时,比如:a.txt文件的内容为:nameandroid,liuclass1,2,3,4这些文件有时就像是数据库文件的格式一样,我们就需要对其进行解析.我们知道获取assets文件后返回的是一个inputstream而不是一个file类型,所以我们需要对inputstream进行解析.主要分为两个阶段:第一个阶段为:去换行符,第二个
-
Android播放assets文件里视频文件相关问题分析
本文实例讲述了Android播放assets文件里视频文件相关问题.分享给大家供大家参考,具体如下: 今天做了一个功能,就是播放项目工程里面的视频文件,不是播放SD卡视频文件. 我开始尝试把视频文件放到 assets文件目录下. 因为之前写webview加载assets文件夹时,是这样写的: webView = new WebView(this); webView.loadUrl(file:///android_asset/sample3_8.html); 依次类推,我尝试将视频video.3g
-
Android API编程之Assets文件操作示例
本文实例讲述了Android API Assets文件操作.分享给大家供大家参考,具体如下: public class ReadAssetActivity extends Activity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.re
-
Android 读取assets和raw文件内容实例代码
android之文件操作--读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹) 2.创建两个txt文件,复制到asset和raw文件夹中: 3.实现的效果: 4.实现代码: (1)布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="
-
Android操作存放在assets文件夹下SQLite数据库的方法
本文实例讲述了Android操作存放在assets文件夹下SQLite数据库的方法.分享给大家供大家参考.具体如下: 因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面.一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机自身的存储上之后再使用,后来考虑到每次都拷贝的话效率不高,并且如果涉及到对数据库的修改操作的话拷贝之后数据就被恢复了. 因此就写了该封装,该封装只是在第一次使用数据库文件的时候把该文
-
android读取assets文件示例
复制代码 代码如下: // 读取assets文件private void assetsRead(){String fileName = "my_assets.txt";// assets下文件//String fileName = "test/my_assets_test.txt";// assets下子目录文件String ret = "";try {InputStream is = getResources().getAssets().ope
-
Android开发实现读取Assets下文件及文件写入存储卡的方法
本文实例讲述了Android开发实现读取Assets下文件及文件写入存储卡的方法.分享给大家供大家参考,具体如下: 调用一个反编译的.so文件,查看起加密和解密情况,需要解析上万的数组,而so文件加密解密都是通过Byte来进行,又需要把String字符串转化为 Byte,当把数据直接写在代码中就会提示多Byte数组过大.最后把数组写到Assets文件加下,读取txt文本文件. 读取Assets方法如下: public String getFromAssets(String fileName) {
随机推荐
- linux系统下MongoDB单节点安装教程
- MSSQL 2005 安全设置图文教程
- Javascript基础教程之JavaScript语法
- js判断文本框输入的内容是否为数字
- 图文详解Ubuntu下安装配置Mysql教程
- Bootstrap 布局组件(全)
- 独特的python循环语句
- ThinkPHP标签制作教程
- JS实现超过长度限制后自动跳转下一款文本框的方法
- jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
- jQuery 源码分析笔记(2) 变量列表
- javz笔记之:有趣的静态方法的使用
- XP中如何完成一次全面的碎片整理
- Java 获取服务器环境的实例详解
- c# 实现获取汉字十六进制Unicode编码字符串的实例
- Java 基础 byte[]与各种数据类型互相转换的简单示例
- Android如何自定义EditText下划线?
- 在django中,关于session的通用设置方法
- 从vue源码看props的用法
- 易语言设置编辑框滚动条与滚动条方式的方法