Android基础篇 读取 Assets 文件夹中的文件
一、前言
(1)资源类型
第一种:res
目录下的资源(该资源不会被编译,但是会生成id)
第二种:Assets
文件夹下的资源文件,又叫原始资源文件(不会被编译,也不会生成id)
(2)Assets概念以及创建
assets
文件夹用于存储应用需要的文件,在安装后可直接从其中读取使用或者写入本地存储中
Android Studio
默认不建立该文件夹,可以手动新建 : app
-> src
-> main
-> assets
或者,右键
main
-> New
-> Folder
-> Assets Folder
AssetManager
对象可以直接访问该文件夹:
AssetManager assetManager = this.getApplicationContext().getAssets();
使用函数 open
可以打开 assets
文件夹中对象,返回一个 InputStream
对象:
//"label.txt" 需要携带尾缀 + 文件名称
inputStream = assetManager.open("label.txt");
二、【读取】assets中文本文件
private String readStringFromAssets() {//通过设备管理对象 获取Asset的资源路径AssetManager assetManager = this.getApplicationContext().getAssets();InputStream inputStream = null;InputStreamReader isr = null;BufferedReader br = null;StringBuffer sb = new StringBuffer();try{inputStream = assetManager.open("label.txt");isr = new InputStreamReader(inputStream);br = new BufferedReader(isr);sb.append(br.readLine());String line = null;while((line = br.readLine()) != null){sb.append("\n" + line);}br.close();isr.close();inputStream.close();} catch (IOException e) {e.printStackTrace();} finally {try {if (br != null) {br.close();}if (isr != null) {isr.close();}if (inputStream != null) {inputStream.close();}} catch (IOException e) {e.printStackTrace();}}return sb.toString();
}
三、读取assets中文件,【写入】本地
/* Checks if external storage is available for read and write */public boolean isExternalStorageWritable() {String state = Environment.getExternalStorageState();if (Environment.MEDIA_MOUNTED.equals(state)) {return true;}Log.e(TAG, "isExternalStorageWritable: " + state);return false;}private boolean readDataFromAssets() {if (!isExternalStorageWritable()) {return false;}InputStream inputStream = null;FileOutputStream fos = null;BufferedOutStream bos = null;File dir = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);Log.e(TAG, "readDataFromAssets: dir = " + dir.getAbsolutePath());if (!dir.exists()) {dir.mkdirs();}try{inputStream = getAssets().open("app-debug.apk");File file = new File(dir, "app-debug.apk");if (file.exists()) {file.delete();}file.createNewFile();fos = new FileOutputStream(file);bos = new BufferedOutputStream(fos);byte[] bytes = new byte[1024];while(inputStream.read(bytes) > 0){bos.write(bytes,0,bytes.lenght);}inputStream.close();bos.close();fos.close();} catch (IOException e) {e.printStackTrace();return false;} finally {try {if (inputStream != null) {inputStream.close();}if (bos != null) {bos.close();}if (fos != null) {fos.close();}} catch (IOException e) {e.printStackTrace();}}return true;
}
Android基础篇 读取 Assets 文件夹中的文件相关推荐
- C++读取文件夹中所有文件的路径,包含子文件夹
C++读取文件夹中所有文件的路径,包含子文件夹 C++实现指定文件夹的路径,获取该路径下所有文件的路径,含子文件夹的文件,为了实现跨平台编译,最后会给出Window和Linux的完成程序: [1]下面 ...
- matlab依次读取每个数,『matlab如何依次读取文件夹中EXCEL文件,并对每一个EXCEL特定列全部数值进行处理?』matlab调入excel文件的某一列...
matlab导入excel表格,第一行为x,第一列为y的数据,其余为z 行的NI(r=1--0.25)比烦. filename='a.xls';%,可据你的需要更改 y=xlsread(filenam ...
- matlab 选择文件夹、选择文件GUI和逐一读取文件夹中的文件
matlab 选择文件夹.选择文件GUI和逐一读取文件夹中的文件 1. 选择文件夹路径: filepath = uigetdir('*.*','请选择文件夹');%fliepath为文件夹路径 2. ...
- 使用C语言查看一个文件夹中所有文件及目录
1.前言 1.1声明 文章中的文字可能存在语法错语以及标点错误,请谅解: 如果在文章中发现代码错误或其它问题请告知,感谢! 2.实现方法 为了使用C语言实现查看一个文件夹中的文件数量功能,可以使用di ...
- 获取文件夹中所有文件的文件名[重复]
本文翻译自:Getting the filenames of all files in a folder [duplicate] Possible Duplicate: 可能重复: Read all ...
- mvfiles:一次性提取多个文件夹中的文件
作者:吴玉轩 (南开大学) Stata 连享会: 知乎 | 简书 | 码云 | CSDN Stata连享会 精品专题 || 精彩推文 2019暑期"实证研究方法与经典论文" ...
- VMware虚拟机文件夹中各文件作用详解
VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...
- 记录一下提取文件夹中所有文件名字
配置Opencv很有用 快速提取文件夹中所有文件的名称! - 简书 (jianshu.com)
- Flume监听文件夹中的文件变化,并把文件下沉到hdfs
1.采集目录到HDFS 采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去 根据需求,首先定义以下3大要素 采集源,即source--监控文件目录 ...
- Java文件操作:文件夹中搜索文件
在文件夹中搜索文件,找到的话将文件的绝对路径列表返回 /*** 递归查找文件* @param baseDirName 查找的文件夹路径* @param targetFileName 需要查找的文件名* ...
最新文章
- 手把手教你使用Flask轻松部署机器学习模型(附代码链接) | CSDN博文精选
- 问题解决10使用带有框架的页面跳转到登录页面时,登录页面只显示在子框架中,未能铺满整个浏览器--解决方案如下:...
- php插入mysql数据返回id
- git学习小结(未完待续)
- local map at cambridge
- mysql出现can t_php运行提示Can't connect to MySQL server on 'localhost'的解决方法
- 【遥感物候】1983-2012年时间序列中国地区GIMMS 3g NDVI下载(已进行旋转、格式转换、投影变换和裁剪)
- 开源PagerSlidingTabStrip的使用Tab与ViewPager的完美结合
- 提升你的开发效率,10 个 NPM 使用技巧
- 大数高精加减乘除(洛谷P1601、P2142、P1303、P1480题题解,Java语言描述)
- NLP之路-python爬虫
- mysql获取一行中多列的最大值_SQL 获取一行中多个字段的最大值
- 微信投票python脚本_微信投票python脚本
- javaScript判断数组内容去重方法
- drupal php 版本,纯PHP drupal主题
- 图片中隐藏信息——图片隐写术
- 2022年的职场会是什么样子?
- element-ui中select组件创建条目创建条目为空时报错的解决方案
- 【Linux-GNU编译器套件(gcc/g++/gfortran)离线编译安装】
- 鸿蒙系统推广时间,鸿蒙系统将全面推广,目标覆盖3亿台设备,第三方IoT可达1亿台...
热门文章
- 麻理工MIT的脑计划eyewire (顺便学习一下医学影像知识)
- 信息技术在园林绿化技师试题测试中的应用
- 创建自己的腾讯云存储桶,将图片上传到腾讯云,并实现父子之间的数据双向绑定
- xp系统计算机蓝屏,XP电脑蓝屏错误代码0*0000007E该怎么解决?
- 8月书讯(上)| 这些新书不可错过
- matlab茎叶图命令,[转载]转载:Stata命令(转自人大论坛)
- moment 的使用 当月第一天
- 南京信息工程大学计算机类专业排名,2019年南京信息工程大学优势专业排名及分数线...
- java 阴历转阳历,阳历转阴历工具类
- python-生成xlsx表格