如何读取assets目录下存放的原生资源文件
2016-01-29 14:19
453 查看
Android资源文件分类:
Android资源文件大致可以分为两种:第一种是res目录下存放的可编译的资源文件:
这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可;第二种是assets目录下存放的原生资源文件:
因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们。那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset/res和被绑定在apk里,并不会解压到/data/data/YourApp目录下去,所以我们无法直接获取到assets的绝对路径,因为它们根本就没有。还好Android系统为我们提供了一个AssetManager工具类。
查看官方API可知,AssetManager提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。
AssetManager类
概述:
提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。通过getAssets()方法获取AssetManager对象。AssetManager类常用方法:
Public Methods final String[] list(String path) 返回指定路径下的所有文件及目录名。 final InputStream open(String fileName) 使用 ACCESS_STREAMING模式打开assets下的指定文件。. final InputStream open(String fileName, int accessMode) 使用显示的访问模式打开assets下的指定文件. 应用实战: 如何在Android Studio中放置assets文件夹那么应该把这个目录放到是没位置呢? 答案就是/src/main/assets。 对应文件位置: 对应代码: public void onClick(View view) { switch (view.getId()) { case R.id.id_DrugView: startActivity(new Intent(this,DrugActivity.class)); break; case R.id.id_readFromAssets: String fileName = "53844/curve.bin"; String temp = getFromAssets(fileName); Toast.makeText(this,temp,Toast.LENGTH_SHORT).show(); default: break; } } public String getFromAssets(String fileName){ try { InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) ); BufferedReader bufReader = new BufferedReader(inputReader); String line=""; String Result=""; while((line = bufReader.readLine()) != null) Result += line; return Result; } catch (Exception e) { e.printStackTrace(); return ""; } } |
相关文章推荐
- mongodb学习2(高级部分)
- sql server2005出现异常及解决方法
- hdoj3339In Action【单源最短路+01背包】
- Centos 6安装后基本配置
- Android开启新的activity并获取返回的结果
- 编译VTK5.10.1时error C1189 requires _WIN32_WINNT的解决方法
- 20+ 个很有用的 jQuery 的 Google 地图插件
- android 动画之从哪来回哪去 —— 支持网络图片
- Android开发之Intent
- openGL SuperBible 7th 初编译
- SparkSQL 概述
- sql操作语句
- 在zabbix中配置发送短信的python脚本
- setchecked方法会触发OnCheckedChangeListener
- spark源码action系列-take
- linux下查看so文件的函数列表
- Android开发之EditText属性详解
- 程序自信
- 对前端质量保障的思考 (前端开发)
- iOS进阶7--桥接JS和Native