Android 中资源分为两种,一种是res下可编译的资源文件, 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,访问也很简单,只需要调用R.XXX.id即可;第二种就是放在assets文件夹下面的原生资源文件,放在这个文件夹下面的文件不会被R文件编译,所以不能像第一种那样直接使用.Android提供了一个工具类,方便我们操作获取assets文件下的文件:AssetManager

AssetManager

AssetManager提供了如下方法用于处理assets

[java] view plain copy  
  1. String[] list(String path);//列出该目录下的下级文件和文件夹名称
  2. InputStream open(String fileName);//以顺序读取模式打开文件,默认模式为ACCESS_STREAMING
  3. InputStream open(String fileName, int accessMode);//以指定模式打开文件。读取模式有以下几种:
  4. //ACCESS_UNKNOWN : 未指定具体的读取模式
  5. //ACCESS_RANDOM : 随机读取
  6. //ACCESS_STREAMING : 顺序读取
  7. //ACCESS_BUFFER : 缓存读取
  8. void close()//关闭AssetManager实例

使用

assets目录下主要存放四种文件:文本文件、图像文件、网页文件(包括html中引用的js/ccs/jpg等资源)、音频视频文件,下面通过具体的案例分别来说下怎么获取

加载assets目录下的网页

[java] view plain copy  
  1. webView.loadUrl("file:///android_asset/html/index.htmll");

说明:这种方式可以加载assets目录下的网页,并且与网页有关的css,js,图片等文件也会的加载。

加载assets目录下的图片资源

[java] view plain copy  
  1. InputStream is = getAssets().open(fileName);
  2. bitmap = BitmapFactory.decodeStream(is);
  3. ivImg.setImageBitmap(bitmap);

加载assets目录下文本文件

[java] view plain copy  
  1. InputStream is = getAssets().open(fileName);
  2. int lenght = is.available();
  3. byte[]  buffer = new byte[lenght];
  4. is.read(buffer);
  5. String result = = new String(buffer, "utf8");

加载assets目录下音乐

[java] view plain copy  
  1. // 打开指定音乐文件,获取assets目录下指定文件的AssetFileDescriptor对象
  2. AssetFileDescriptor afd = am.openFd(music);
  3. mPlayer.reset();
  4. // 使用MediaPlayer加载指定的声音文件。
  5. mPlayer.setDataSource(afd.getFileDescriptor(),
  6. afd.getStartOffset(), afd.getLength());
  7. // 准备声音
  8. mPlayer.prepare();
  9. // 播放
  10. mPlayer.start();

补充下:Android中还有另外一个文件夹raw,和assets差不多,也不会被R文件编译,但是raw下不能在建文件夹,assets文件下是可以在建文件夹的,下面是获取raw文件夹下资源的方法:

[java] view plain copy  
  1. InputStream is = getResources().openRawResource(R.id.filename);

将assets下的文件复制到SD卡中

[java] view plain copy  
  1. /**
  2. *  从assets目录中复制整个文件夹内容
  3. *  @param  context  Context 使用CopyFiles类的Activity
  4. *  @param  oldPath  String  原文件路径  如:/aa
  5. *  @param  newPath  String  复制后路径  如:xx:/bb/cc
  6. */
  7. public void copyFilesFassets(Context context,String oldPath,String newPath) {
  8. try {
  9. String fileNames[] = context.getAssets().list(oldPath);//获取assets目录下的所有文件及目录名
  10. if (fileNames.length > 0) {//如果是目录
  11. File file = new File(newPath);
  12. file.mkdirs();//如果文件夹不存在,则递归
  13. for (String fileName : fileNames) {
  14. copyFilesFassets(context,oldPath + "/" + fileName,newPath+"/"+fileName);
  15. }
  16. } else {//如果是文件
  17. InputStream is = context.getAssets().open(oldPath);
  18. FileOutputStream fos = new FileOutputStream(new File(newPath));
  19. byte[] buffer = new byte[1024];
  20. int byteCount=0;
  21. while((byteCount=is.read(buffer))!=-1) {//循环从输入流读取 buffer字节
  22. fos.write(buffer, 0, byteCount);//将读取的输入流写入到输出流
  23. }
  24. fos.flush();//刷新缓冲区
  25. is.close();
  26. fos.close();
  27. }
  28. } catch (Exception e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. //如果捕捉到错误则通知UI线程
  32. MainActivity.handler.sendEmptyMessage(COPY_FALSE);
  33. }
  34. }

读取assets目录下的文件详细介绍相关推荐

  1. 安卓读取mysql数据库文件路径_Android开发实现读取assets目录下db文件的方法示例...

    本文实例讲述了Android开发实现读取assets目录下db文件的方法.分享给大家供大家参考,具体如下: 最近准备打算写一个关于天气预报的app,偶然的机会在一大神的博客上看到了一个获取天气的api ...

  2. Android:读取assets目录下文件(二)

    在上篇博客里,介绍了如何读取assets目录下的txt文件.在这里,介绍如何读取xml文件. xml文件内容如下: <?xml version="1.0" encoding= ...

  3. android读取mysql数据库文件_Android开发系列(十七):读取assets目录下的数据库文件...

    在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...

  4. Android读取assets目录下文件数据内容

    Android读取assets目录下文件数据内容 Android的体系架构设计中,assets目录下的数据内容(图片.文件等等)将不会被Android系统压缩.二次处理等,assets目录下的文件 ...

  5. 安卓上为什么不能用system.io.file读取streammingAssets目录下的文件

    安卓上为什么不能用system.io.file读取streammingAssets目录下的文件 首先,看文档: Streaming Assets Most assets in Unity are co ...

  6. Android之解决PC浏览器访问手机服务端取assets目录下的文件页面显示不出来问题

    1 问题 我在手机里面写了Java socket服务,然后把前端的图片和css和js的文件放到了安卓项目的 assets目录,然后浏览器访问服务,我会把 assets目录下的文件读出来,然后用Data ...

  7. CMD命令读取某个目录下所有文件夹名或文件名

    CMD命令读取某个目录下所有文件夹名或文件名 CMD命令读取某个目录下所有文件夹名或文件名 要用到的dir命令 开始操作 CMD命令读取某个目录下所有文件夹名或文件名 目的是给自己留个笔记! 要用到的 ...

  8. 在不root手机的情况下读取Data目录下的文件

    127|shell@android:/ $ cd /data cd /data shell@android:/data $ ls ls opendir failed, Permission denie ...

  9. Android开发笔记(二十五)assets目录下的文件读取

    AssetManager工具类 assets目录用于存放应用程序的资产文件,该目录下的文件不会被系统编译,所以无法通过R.*.*这种方式来访问.Android专门为assets目录提供了一个工具类As ...

  10. Android复制Assets目录下的文件到/data/data目录

    目的 l  在项目开发时,尤其是游戏开发,有时候需要把特定的文件放在data/data目录下,比如sqlite数据库中,我们会事先创建数据库并在里面加入需要的数据,比如游戏的关卡数据.而android ...

最新文章

  1. PAT甲级1019 General Palindromic Number:[C++题解]进制位、回文数、vector来做
  2. @RequestParam和@RequestBody的区别 (结合 Get/Post )
  3. 如何动态的向数组中插入键值对_在Java中实现的一个简单“HashMap”
  4. 551. 学生出勤记录
  5. SQL 取n到m条记录
  6. 惯性制导精度是多少_美军激光炸弹真实精度性能:炸小卡车,直接从驾驶员车窗钻进去炸...
  7. Java 算法 字串统计
  8. 基于实验数据的轮胎模型
  9. 随想录(对比着c学java)
  10. matlab图像的读取和保存
  11. python的难点是什么,【python基础学习】基础重点难点知识汇总
  12. UPS不间断电源原理与选用配备技巧
  13. Android 编辑 mhtml,Html Editor下载-Html Editor(Html编辑器)下载v1.0 安卓版-西西软件下载...
  14. Gilbert Elliot丢包模型
  15. 锐捷睿易:配置SSH登录
  16. Alignment trap
  17. linux入门详细介绍
  18. 【C++代码】区间重叠问题
  19. Maven 的下载安装教程
  20. Neo4j VS TigerGraph横向对比

热门文章

  1. 二叉搜索树的模拟及其实现(c++)
  2. 【数据结构 课程设计】识别结点(node) 故障和边缘(edge)故障中的网络断层扫描
  3. 南阳oj 28 大数阶乘
  4. TX2入门(10)——TensorRT(1)(tx2端inference)
  5. 收藏!!!不同品牌笔记本/台式机进入BIOS按键
  6. python打开jpg_python如何读jpg文件
  7. html5设置视频背景颜色,HTML5设置视频背景的方法介绍
  8. UFS系列九:UFS数据安全
  9. Kubuntu20.04开启UI的root登录
  10. JEP 379:将低暂停时间的垃圾收集器Shenandoah推向生产