读取assets目录下的文件详细介绍
Android 中资源分为两种,一种是res下可编译的资源文件, 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,访问也很简单,只需要调用R.XXX.id即可;第二种就是放在assets文件夹下面的原生资源文件,放在这个文件夹下面的文件不会被R文件编译,所以不能像第一种那样直接使用.Android提供了一个工具类,方便我们操作获取assets文件下的文件:AssetManager
AssetManager
AssetManager提供了如下方法用于处理assets
- String[] list(String path);//列出该目录下的下级文件和文件夹名称
- InputStream open(String fileName);//以顺序读取模式打开文件,默认模式为ACCESS_STREAMING
- InputStream open(String fileName, int accessMode);//以指定模式打开文件。读取模式有以下几种:
- //ACCESS_UNKNOWN : 未指定具体的读取模式
- //ACCESS_RANDOM : 随机读取
- //ACCESS_STREAMING : 顺序读取
- //ACCESS_BUFFER : 缓存读取
- void close()//关闭AssetManager实例
使用
assets目录下主要存放四种文件:文本文件、图像文件、网页文件(包括html中引用的js/ccs/jpg等资源)、音频视频文件,下面通过具体的案例分别来说下怎么获取
加载assets目录下的网页
- webView.loadUrl("file:///android_asset/html/index.htmll");
说明:这种方式可以加载assets目录下的网页,并且与网页有关的css,js,图片等文件也会的加载。
加载assets目录下的图片资源
- InputStream is = getAssets().open(fileName);
- bitmap = BitmapFactory.decodeStream(is);
- ivImg.setImageBitmap(bitmap);
加载assets目录下文本文件
- InputStream is = getAssets().open(fileName);
- int lenght = is.available();
- byte[] buffer = new byte[lenght];
- is.read(buffer);
- String result = = new String(buffer, "utf8");
加载assets目录下音乐
- // 打开指定音乐文件,获取assets目录下指定文件的AssetFileDescriptor对象
- AssetFileDescriptor afd = am.openFd(music);
- mPlayer.reset();
- // 使用MediaPlayer加载指定的声音文件。
- mPlayer.setDataSource(afd.getFileDescriptor(),
- afd.getStartOffset(), afd.getLength());
- // 准备声音
- mPlayer.prepare();
- // 播放
- mPlayer.start();
补充下:Android中还有另外一个文件夹raw,和assets差不多,也不会被R文件编译,但是raw下不能在建文件夹,assets文件下是可以在建文件夹的,下面是获取raw文件夹下资源的方法:
- InputStream is = getResources().openRawResource(R.id.filename);
将assets下的文件复制到SD卡中
- /**
- * 从assets目录中复制整个文件夹内容
- * @param context Context 使用CopyFiles类的Activity
- * @param oldPath String 原文件路径 如:/aa
- * @param newPath String 复制后路径 如:xx:/bb/cc
- */
- public void copyFilesFassets(Context context,String oldPath,String newPath) {
- try {
- String fileNames[] = context.getAssets().list(oldPath);//获取assets目录下的所有文件及目录名
- if (fileNames.length > 0) {//如果是目录
- File file = new File(newPath);
- file.mkdirs();//如果文件夹不存在,则递归
- for (String fileName : fileNames) {
- copyFilesFassets(context,oldPath + "/" + fileName,newPath+"/"+fileName);
- }
- } else {//如果是文件
- InputStream is = context.getAssets().open(oldPath);
- FileOutputStream fos = new FileOutputStream(new File(newPath));
- byte[] buffer = new byte[1024];
- int byteCount=0;
- while((byteCount=is.read(buffer))!=-1) {//循环从输入流读取 buffer字节
- fos.write(buffer, 0, byteCount);//将读取的输入流写入到输出流
- }
- fos.flush();//刷新缓冲区
- is.close();
- fos.close();
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- //如果捕捉到错误则通知UI线程
- MainActivity.handler.sendEmptyMessage(COPY_FALSE);
- }
- }
读取assets目录下的文件详细介绍相关推荐
- 安卓读取mysql数据库文件路径_Android开发实现读取assets目录下db文件的方法示例...
本文实例讲述了Android开发实现读取assets目录下db文件的方法.分享给大家供大家参考,具体如下: 最近准备打算写一个关于天气预报的app,偶然的机会在一大神的博客上看到了一个获取天气的api ...
- Android:读取assets目录下文件(二)
在上篇博客里,介绍了如何读取assets目录下的txt文件.在这里,介绍如何读取xml文件. xml文件内容如下: <?xml version="1.0" encoding= ...
- android读取mysql数据库文件_Android开发系列(十七):读取assets目录下的数据库文件...
在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...
- Android读取assets目录下文件数据内容
Android读取assets目录下文件数据内容 Android的体系架构设计中,assets目录下的数据内容(图片.文件等等)将不会被Android系统压缩.二次处理等,assets目录下的文件 ...
- 安卓上为什么不能用system.io.file读取streammingAssets目录下的文件
安卓上为什么不能用system.io.file读取streammingAssets目录下的文件 首先,看文档: Streaming Assets Most assets in Unity are co ...
- Android之解决PC浏览器访问手机服务端取assets目录下的文件页面显示不出来问题
1 问题 我在手机里面写了Java socket服务,然后把前端的图片和css和js的文件放到了安卓项目的 assets目录,然后浏览器访问服务,我会把 assets目录下的文件读出来,然后用Data ...
- CMD命令读取某个目录下所有文件夹名或文件名
CMD命令读取某个目录下所有文件夹名或文件名 CMD命令读取某个目录下所有文件夹名或文件名 要用到的dir命令 开始操作 CMD命令读取某个目录下所有文件夹名或文件名 目的是给自己留个笔记! 要用到的 ...
- 在不root手机的情况下读取Data目录下的文件
127|shell@android:/ $ cd /data cd /data shell@android:/data $ ls ls opendir failed, Permission denie ...
- Android开发笔记(二十五)assets目录下的文件读取
AssetManager工具类 assets目录用于存放应用程序的资产文件,该目录下的文件不会被系统编译,所以无法通过R.*.*这种方式来访问.Android专门为assets目录提供了一个工具类As ...
- Android复制Assets目录下的文件到/data/data目录
目的 l 在项目开发时,尤其是游戏开发,有时候需要把特定的文件放在data/data目录下,比如sqlite数据库中,我们会事先创建数据库并在里面加入需要的数据,比如游戏的关卡数据.而android ...
最新文章
- PAT甲级1019 General Palindromic Number:[C++题解]进制位、回文数、vector来做
- @RequestParam和@RequestBody的区别 (结合 Get/Post )
- 如何动态的向数组中插入键值对_在Java中实现的一个简单“HashMap”
- 551. 学生出勤记录
- SQL 取n到m条记录
- 惯性制导精度是多少_美军激光炸弹真实精度性能:炸小卡车,直接从驾驶员车窗钻进去炸...
- Java 算法 字串统计
- 基于实验数据的轮胎模型
- 随想录(对比着c学java)
- matlab图像的读取和保存
- python的难点是什么,【python基础学习】基础重点难点知识汇总
- UPS不间断电源原理与选用配备技巧
- Android 编辑 mhtml,Html Editor下载-Html Editor(Html编辑器)下载v1.0 安卓版-西西软件下载...
- Gilbert Elliot丢包模型
- 锐捷睿易:配置SSH登录
- Alignment trap
- linux入门详细介绍
- 【C++代码】区间重叠问题
- Maven 的下载安装教程
- Neo4j VS TigerGraph横向对比
热门文章
- 二叉搜索树的模拟及其实现(c++)
- 【数据结构 课程设计】识别结点(node) 故障和边缘(edge)故障中的网络断层扫描
- 南阳oj 28 大数阶乘
- TX2入门(10)——TensorRT(1)(tx2端inference)
- 收藏!!!不同品牌笔记本/台式机进入BIOS按键
- python打开jpg_python如何读jpg文件
- html5设置视频背景颜色,HTML5设置视频背景的方法介绍
- UFS系列九:UFS数据安全
- Kubuntu20.04开启UI的root登录
- JEP 379:将低暂停时间的垃圾收集器Shenandoah推向生产