Android的xml/assets/raw资源使用具体解释
Android应用訪问assets文件夹资源过程例如以下:
须要注意的是。fileName不能是文件夹。
- AssetManager assetManager = getResources().getAssets(); //获取管理assets文件夹资源的AssetManager引用
- InputStream inputStream = assetManager .open("data.txt"); //获取assets/data.txt资源文件的输入流
- InputStreamReader inputReader = new InputStreamReader(inputStream);
- BufferedReader bufReader = new BufferedReader(inputReader);
- while((line = bufReader.readLine())!=null) //按行读取输入流数据
- result +=line;
- return result;
- 或者
- InputStream inputStream = getResources().getAssets().open("data.txt"); //获取assets/data.txt文件的输入流
- int length = inputStream.available(); //获取文件的字节数
- byte[] buffer = new byte[length ]; //创建length大小byte字节数组
- inputStream.read(buffer); //将文件里的数据读到byte数组中
- String result = EncodingUtils.getString(buffer,"UTF-8"); //获得字符串数据
- InputStreamReader inputReader = new InputStreamReader(getResources().openRawResource("data.txt"));
- BufferedReader bufReader = new BufferedReader(inputReader);
- while((line = bufReader.readLine())!=null) //按行读取输入流数据
- result +=line;
- return result;
- XmlResourceParser xmlParser = getResource().getXml(R.xml.persons);
- //获得res/xml/data.xml相应 XmlResourceParser解析器引用
- StringBuilder sb = new StringBuilder("");
- while(xmlParser.getEventType() != XmlPullParser.END_DOCUMENT){ //是否读取到XML文档结束推断
- if(xmlParser.getEventType() == XmlPullParser.START_TAG){ //遇到開始标签
- String tagName = xmlParser.getName(); //获得标签名
- if(tagName.equals("person")){ //依据标签名获取相应的属性
- String personAge = xmlParser.getAttributeValue(null,"age");//依据属性名来获取属性值
- String personSex = xmlParser.getAttributeValue(1); //依据属性名来获取属性值
- String person = xmlParser.nextText(); //获取文本结点的值
- String onePerson = "姓名:"+person+"性别:"+personSex+"age:"+personAge ;
- sb.append(onePerson );
- }
- sb.append("\n");
- }
- xmlParser.next(); //获取解析器的下一个事件
- }
- System.out.println(sb.toString());
- }
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-size:16px; line-height:24px">
(2)源代码MainActivity.java
- package com.example.assetsresource;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.Reader;
- import org.apache.http.util.EncodingUtils;
- import org.xmlpull.v1.XmlPullParser;
- import org.xmlpull.v1.XmlPullParserException;
- import android.app.Activity;
- import android.content.res.AssetManager;
- import android.content.res.XmlResourceParser;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.TextView;
- /**
- * 项目名称/版本:assetsResource/v1.0
- * 包 名:com.example.assetsresource
- * 类描写叙述:解析assets、xml、raw文件夹下文件
- * 创建人:jiangdongguo 创建时间:2015-6-3 下午11:12:47
- * 博客地址:http://blog.csdn.net/u012637501
- */
- public class MainActivity extends Activity {
- private Button xmlBtn = null;
- private Button rawBtn = null;
- private Button assetsBtn = null;
- private TextView context = null;
- private void init() {
- xmlBtn = (Button) findViewById(R.id.parserXML);
- rawBtn = (Button) findViewById(R.id.parserRaw);
- assetsBtn = (Button) findViewById(R.id.parserAssets);
- myClickListener listener = new myClickListener();
- xmlBtn.setOnClickListener(listener);
- rawBtn.setOnClickListener(listener);
- assetsBtn.setOnClickListener(listener);
- context = (TextView) findViewById(R.id.text);
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- init();
- }
- /**
- * 内部类描写叙述:内部类实现事件监听器 博客地址:http://blog.csdn.net/u012637501
- */
- class myClickListener implements OnClickListener {
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.parserAssets:
- AssetManager asset = getResources().getAssets(); // 获得assets工具类AssetManager引用
- try {
- InputStream inputStream = asset.open("data.txt"); // 获得assets文件夹下data.txt的输入流
- int length = inputStream.available(); // 获得输入流可读字节长度
- byte[] buffer = new byte[length];
- inputStream.read(buffer); // 从输入流读取buffer字节数据到buffer字节数组中
- String result = new String(buffer, "GB2312"); // 将字节数据转换成字符串数据
- context.setText(result); // 将assets文件夹下的data.txt数据显示到文本显示框中
- } catch (IOException e) {
- e.printStackTrace();
- }
- break;
- case R.id.parserRaw:
- InputStream inputStream = getResources().openRawResource(
- R.raw.skill); // 获得res/raw文件夹下的输入流
- int length;
- try {
- length = inputStream.available(); // 获得输入流可读字节长度
- byte[] buffer = new byte[length];
- inputStream.read(buffer); // 从输入流读取buffer字节数据到buffer字节数组中
- String result = new String(buffer, "GB2312"); // 将字节数据转换成字符串数据
- context.setText(result); // 将assets文件夹下的data.txt数据显示到文本显示框中
- break;
- } catch (IOException e) {
- e.printStackTrace();
- }
- case R.id.parserXML:
- XmlResourceParser xmlParser = getResources().getXml(R.xml.persons); // 获得res/xml文件夹下的输入流
- try {
- StringBuilder sb = new StringBuilder();
- while(xmlParser.getEventType() != XmlPullParser.END_DOCUMENT){ //是否读取到XML文档结束推断
- if(xmlParser.getEventType() == XmlPullParser.START_TAG){ //遇到開始标签
- String tagName = xmlParser.getName(); //获得标签名
- if(tagName.equals("person")){ //依据标签名获取相应的属性
- String personAge = xmlParser.getAttributeValue(null,"age");//依据属性名来获取属性值
- String personSex = xmlParser.getAttributeValue(1); //依据属性名来获取属性值
- String person = xmlParser.nextText(); //获取文本结点的值
- String onePerson = "姓名:"+person+"性别:"+personSex+"age:"+personAge ;
- sb.append(onePerson );
- }
- sb.append("\n");
- }
- xmlParser.next(); //获取解析器的下一个事件
- }
- context.setText(sb.toString());
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- break;
- default:
- break;
- }
- }
- }
- }
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="60dp">
- <Button
- android:id="@+id/parserXML"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:text="解析xml"/>
- <Button
- android:id="@+id/parserAssets"
- android:layout_centerInParent="true"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:text="解析assets"/>
- <Button
- android:id="@+id/parserRaw"
- android:layout_alignParentRight="true"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:text="解析raw"/>
- </RelativeLayout>
- <!--文本显示卡滚动显示-->
- <ScrollView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView
- android:id="@+id/text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
- </ScrollView>
- </LinearLayout>
- int currentImage=0;
- InputStream inputStream = null;
- AssetManager assetManager = getResources().getAssets();
- String[] images = assetManager.list("");//获取assets/myImages文件夹以下全部的文件名称称
- public void nextBtn(View v){
- //防止数组越界处理
- if(currentImage>=images.length){
- currentImage = 0;
- }
- //依据文件名称获得相应的输入流
- inputStream=assetManager.open(images[currentImage++]);
- //假设图片还未回收,先强制回收该图片
- BitmapDrawable bitmapDrawable = (BitmapDrawable)imageView.getDrawable();
- if(bitmapDrawable !=null && !bitmapDrawable.getBitmap().isRecycled()){
- bitmapDrawable.getBitmap().recycle();
- }
- //编码输入流,获得图片
- imageView.setImageBitmap(BitmapFactory.decodeStream(inputStream));
- //关闭输入流
- inputStream.close();
- }
訪问assets子文件夹下的某个资源方法:如String[] list=null;list=getResources().getAssets().list("abc");它返回的是在assets文件夹下abc文件夹中文件的文件名称的列表。再去检查list中是否有你须要的文件。读取abc文件夹中的文件的时候仅仅需:InputStreamin=getResources().getAssets().open("abc/yan.txt");获得文件的输入流就可以。
Android的xml/assets/raw资源使用具体解释的更多相关文章
- assets raw 资源 AssetManager
assets raw 目录简介 assets核心特性:不会被编译成二进制,支持子目录(可以分类,这是相对raw目录最大的好处),通过文件名访问,调用getAssets通过AssetManager访问 ...
- Android开发 MediaPlayer播放raw资源MP3文件
代码 private MediaPlayer mRingPlayer; /** * 播放铃声 */ private void startRing(){ if (mRingPlayer != null) ...
- 三个特殊资源目录 /res/xml /res/raw 和 /assets
在android开发中,我们离不开资源文件的使用,从drawable到string,再到layout,这些资源都为我们的开发提供了极大的便利,不过我们平时大部分时间接触的资源目录一般都是下面这三个. ...
- android工程下assets与raw文件夹
在应用的开发中,当我们创建一个新的Android工程后,我们会发现工程中包含了一个目录assets,另外当我们察看一些示例工程的时候,有时会发现在该工程的资源目录下会有一个raw目录(res/raw) ...
- Android Studio增加assets目录、raw目录
assets与res/raw不同 assets目录是Android的一种特殊目录,用于放置APP所需的固定文件,且该文件被打包到APK中时,不会被编码到二进制文件. Android还存在一种放置在re ...
- android 各种xml资源的引用方式
更多资源类型 本页定义了其它一些具体的资源类型,包括: Bool 存放布尔值的XML资源. Color 存放颜色值的XML资源(十六进制颜色). Dimension 存放数量值的XML资源(带计量单位 ...
- Android开发---如何操作资源目录中的资源文件4 ---访问xml的配置资源文件的内容
Android开发---如何操作资源目录中的资源文件4 XML,位于res/xml/,这些静态的XML文件用于保存程序的数据和结构. XmlPullParser可以用于解释xml文件 效果图: 描述: ...
- Xamarin.Android 如何使用Assets目录下的文件
原文:Xamarin.Android 如何使用Assets目录下的文件 个人原创,转载注明出处:http://blog.csdn.net/supluo/article/details/43672411 ...
- Android通过xml文件配置数据库
之前一段时间自己封装了两个数据库,一个是ORM数据库,另一个是事件流数据库,项目相应的地址如下: ORM数据库:https://github.com/wenjiang/SimpleAndroidORM ...
随机推荐
- Spring使用@Required注解依赖检查
Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种情况,你需要 @Required ...
- node升级后,项目中的node-sass报错的问题
之前可能因为电脑不知道哪抽风了,在npm build的时候进入就卡在入口的地方,启动express的时候也会,所以就重装了一下node 重装node 其实也不是重装,就是使用 where node 查 ...
- 使用apache htpasswd生成加密的password文件,并使用.htaccess控制文件夹訪问
htpasswd 是apache的小工具.在apache安装文件夹bin下可找到. Usage: htpasswd [-cmdpsD] passwordfile username htpasswd - ...
- C#类和结构体的异同点简单总结
类和结构的异同点?异: 1.关键字不同 一个是class,一个是struct 2.类型不同,一个是引用类型,一个是值类型(一个堆区,一个栈区) 3.成员不同,结构体没有默认的构造函数 ...
- Java编程兵书
<Java编程兵书> 基本信息 作者: 桂颖 任昱衡 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121207419 上架时间:2013-8-26 出版日期:2013 ...
- Excel实现二级菜单联动
项目中需要导入一个Excel模板需要实现二级联动,现记录如下: 首先看一下原始数据,原始信息在一张工作表,第一行是省市名称,下面的若干行为对应省市下面的地名和区名.需要在另外一张工作表中A列和B列建立 ...
- iOS: 如何获取ios设备的当前IP地址
有的时候,我们项目上线后,需要根据ip地址去统计不同地区的用户情况,此时IP地址的收取显得尤其重要,一般情况下,在用户登录时去获取用户的ip是准确的,当然实时追踪ip的变化而统计是更安全可靠的. ip ...
- LXD 2.0 系列(一):LXD 入门
LXD是提供了RESTAPI的LXC 容器管理器,主要是管理linux容器的第三方管理器.也许现在您还没有听说过,下面我们就来入门——介绍一下LXD 什么是 LXD ? 简单地说,LXD 就是一个提供 ...
- RUP(Rational Unified Process),统一软件开发过程
RUP(Rational Unified Process),统一软件开发过程 https://baike.baidu.com/item/RUP/8924595?fr=aladdin RUP最重要的它有 ...
- [Algorithm -- Dynamic programming] How Many Ways to Decode This Message?
For example we have 'a' -> 1 'b' -> 2 .. 'z' -> 26 By given "12", we can decode t ...