`

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

 
阅读更多

android开发中,我们离不开资源文件的使用,从drawable到string,再到layout,这些资源都为我们的开发提供了极大的便利,不过我们平时大部分时间接触的资源目录一般都是下面这三个。

/res/drawable
/res/values
/res/layout


但android的资源文件并不止这些,下面就为大家介绍一下另外三个资源目录

/res/xml
/res/raw
/assets


首先是/res/xml ,这个目录中大家可能偶尔用到过,这里可以用来存储xml格式的文件,并且和其他资源文件一样,这里的资源是会被编译成二进制格式放到最终的安装包里的,我们也可以通过R类来访问这里的文件,并且解析里面的内容,例如我们在这里存放了一个名为data.xml的文件:


随后,我们就可以通过资源ID来访问并解析这个文件了:


在这里,我们用资源类的getXml方法,返回了一个xml解析器,这个解析器的工作原理和SAX方式差不多,有关SAX的具体细节可以看看我的另一篇帖子:
http://www.eoeandroid.com/thread-33212-1-1.html

要注意的是,这里的xml文件,最终是会被编译成二进制形式的,如果大家想让文件原样存储的话,那么就要用到下一个目录啦,那就是/res/raw目录

这个目录的唯一区别就是,这里的文件会原封不动的存储到设备上,不会被编译为二进制形式,访问的方式也是通过R类,下面是一个例子


这次使用资源类中的方法,openRawResource,返回给我们一个输入流,这样我们就可以任意读取文件中的内容了,例如上面例子中那样,原样输出文本文件中的内容。

当然,如果你需要更高的自由度,尽量不受android平台的约束,那么/assets这个目录就是你的首选了~
这个目录中的文件除了不会被编译成二进制形式之外,另外一点就是,访问方式是通过文件名,而不是资源ID。并且还有更重要的一点就是,大家可以在这里任意的建立子目录,而/res目录中的资源文件是不能自行建立子目录的。如果需要这种灵活的资源存储方式,那么就看看下面这个例子:

在context上下文中,调用getAssets返回一个AssetManager,然后使用open方法就可以访问需要的资源了,这里open方法是以assets目录为根的。所以上面这段代码访问的是assets目录中名为data.txt的资源文件~

这三个目录中我们平时开发应用的时候,还是很实用的,这里发给大家,希望能对大家在开发应用时有所帮助~

分享到:
评论

相关推荐

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

    NULL 博文链接:https://geyubin.iteye.com/blog/1134536

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

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

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

    主要介绍了Android开发之资源目录assets与res/raw的区别,结合实例形式分析了Android开发中资源目录assets与res/raw的具体功能、使用方法与区别,需要的朋友可以参考下

    Android Assets文件和Raw文件读取

    Android 中获取Assets目录下的文件和子目录下的文件,获取raw文件夹下的文件

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

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

    android 从assets和res中读取文件

    在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。 介绍...

    Android代码-Android

    Slink Mobile SDK for Android 1. Source Java: ~/src/jp/co/secioss/auth/SeciossAuthActivity.java ~/src/jp/co/secioss/lib/SeciossHttpAsyncTask.java ~/src/jp/co/secioss/lib/SeciossTrustManager.java Res: ~...

    方舟游戏框架,一个 2D 游戏框架。

    方舟游戏框架,一个 2D 游戏框架。 文件 Ark-Game-Framework-master.zip 包含以下条目。 .gitignore//from ww w. jav a2 s ....Android Sample/.classpath Android Sample/.project...Android Sample/assets/images/inte

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

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

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

    1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹)   2.创建两个txt文件,复制到asset和raw文件夹中: 3.实现的效果: 4.实现代码: (1)布局文件: &...

    【android开发】解析assets文件夹下XML资源文件

    很多时候我们需要将资源文件以XML形式放在assets文件夹下,我写的这个demo是一个比较通用的获取xml输入流,解析xml获取想要数据的方法,希望对大家有帮助。

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

    android读取raw和assets下资源文件demo,运行ok,供快速掌握读取R.raw.**或者保存在assets下的文件的内容

    Android代码-android

    cp android/app/src/main/assets/shace.example.properties android/app/src/main/assets/shace.properties Set the correct values in android/app/src/main/assets/shace.properties Install Android Studio (The ...

    Android访问assets本地json文件的方法

    目的:当App中用到固定的json数据时,如:国家城市列表、班级成员等时,可以将json数据制作为本地json文件存入assets文件夹下。... // 获得assets资源管理器(assets中的文件无法直接访问,可以使用AssetManager访问

    读写Android中assets目录下的文件的方法详解

    Android资源文件大致可以分为两种: 第一种是res目录下存放...因为apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset/res和被绑定在apk里,并不会解压到/data/data/YourApp目录下去,所以我们无法直接获

    Android 读取raw、assets中的txt文件

    Android 读取raw、assets中的txt文件 https://blog.csdn.net/qq_31939617/article/details/80911124

    android编程(自学资料)

    Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx....

    Android 中raw和assets文件夹的区别

    Android 中raw和assets文件夹的区别 以下是我通过整理网上与自己的经验所得。 raw 和 assets 的相同点 它们会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式。 raw 和 assets 的不同点 1....

Global site tag (gtag.js) - Google Analytics