Android的xml/assets/raw资源使用详解

一、assets/xml/raw资源介绍
1.assets资源目录:assets目录下存放的资源代表应用无法直接访问的原生资源,这些文件将原封不动的存储到设备上,不会被编译为二进制形式,访问方式是通过文件名而不是资源ID。应用程序通过AssetManager以的字节流的形式来读取资源文件。assets与res/raw的区别是assets支持任意深度的子目录,这些资源文件不会生成任何资源ID。Android应用访问assets文件夹资源步骤如下:
    (1)先在Activity中调用getAssets()来获取AssetManager引用;
    (2)再用AssetManger的open(String fileName,int accessMode)方法指定读取的文件以及访问模式,从而得到文件的输入流InputStream。需要注意的是,fileName不能是目录。
    (3)从输入流InputStream中读取数据,读取完成后关闭输入流(close());
    (4)调用AssetManager.close()关闭AssetManager
示例代码:
  1. AssetManager assetManager = getResources().getAssets();  //获取管理assets目录资源的AssetManager引用  
  2.    InputStream inputStream =  assetManager .open("data.txt");  //获取assets/data.txt资源文件的输入流  
  3.    InputStreamReader inputReader = new InputStreamReader(inputStream);  
  4.     BufferedReader bufReader = new BufferedReader(inputReader);  
  5.     while((line = bufReader.readLine())!=null)        //按行读取输入流数据  
  6.                 result +=line;  
  7.     return result;       
  8. 或者  
  9.     InputStream inputStream = getResources().getAssets().open("data.txt");    //获取assets/data.txt文件的输入流  
  10.     int length = inputStream.available();                //获取文件的字节数  
  11.     byte[] buffer = new byte[length ];                  //创建length大小byte字节数组  
  12.     inputStream.read(buffer);                                //将文件中的数据读到byte数组中  
  13.     String result = EncodingUtils.getString(buffer,"UTF-8");    //获得字符串数据  
2.res/raw资源目录:raw目录下存放的资源代表应用无法直接访问的原生资源,这些文件将原封不动的存储到设备上,不会被编译为二进制形式,应用通过资源ID(R清单类索引项)访问raw目录下的资源。应用程序使用openRawResource以的字节流的形式来读取资源文件,raw不支持多级子目录。
示例代码:
  1. InputStreamReader inputReader = new InputStreamReader(getResources().openRawResource("data.txt"));  
  2.     BufferedReader bufReader = new BufferedReader(inputReader);  
  3.     while((line = bufReader.readLine())!=null)        //按行读取输入流数据  
  4.                 result +=line;  
  5.     return result;

3.res/xml资源目录:该目录用于存储通用的XML格式文件,同/res/drawable资源一样,xml资源将会被编译成二进制格式存放到最终的安装包里。xml目录不支持多级子目录,在开发中可以通过R类来访问这些文件资源并且解析里面的内容。
XML资源的内容如下res/xml/persons.xml:
<?xml version="1.0"  encoding="UTF-8"?>
<persons>
        <person age="100"  性别="男">张三</person>
        <person age="23"  性别="男">李四</person>
        <person age="44"  性别="女">王五</person>
        <person age="78"  性别="男">赵六</person>
</persons>
示例代码:
 
  1. XmlResourceParser xmlParser = getResource().getXml(R.xml.persons);  
  2. //获得res/xml/data.xml对应 XmlResourceParser解析器引用  
  3.     StringBuilder sb = new StringBuilder("");                              
  4.      while(xmlParser.getEventType() != XmlPullParser.END_DOCUMENT){ //是否读取到XML文档结束判断  
  5.        if(xmlParser.getEventType() == XmlPullParser.START_TAG){  //遇到开始标签  
  6.          String tagName = xmlParser.getName();   //获得标签名  
  7.          if(tagName.equals("person")){   //根据标签名获取对应的属性  
  8.                String personAge =  xmlParser.getAttributeValue(null,"age");//根据属性名来获取属性值  
  9.                                    String personSex = xmlParser.getAttributeValue(1);          //根据属性名来获取属性值  
  10.                                    String person = xmlParser.nextText();    //获取文本结点的值  
  11.                                    String onePerson = "姓名:"+person+"性别:"+personSex+"age:"+personAge ;  
  12.                                    sb.append(onePerson );                                     
  13.                  }  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值