一、前言

(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 文件夹中的文件相关推荐

  1. C++读取文件夹中所有文件的路径,包含子文件夹

    C++读取文件夹中所有文件的路径,包含子文件夹 C++实现指定文件夹的路径,获取该路径下所有文件的路径,含子文件夹的文件,为了实现跨平台编译,最后会给出Window和Linux的完成程序: [1]下面 ...

  2. matlab依次读取每个数,『matlab如何依次读取文件夹中EXCEL文件,并对每一个EXCEL特定列全部数值进行处理?』matlab调入excel文件的某一列...

    matlab导入excel表格,第一行为x,第一列为y的数据,其余为z 行的NI(r=1--0.25)比烦. filename='a.xls';%,可据你的需要更改 y=xlsread(filenam ...

  3. matlab 选择文件夹、选择文件GUI和逐一读取文件夹中的文件

    matlab 选择文件夹.选择文件GUI和逐一读取文件夹中的文件 1. 选择文件夹路径: filepath = uigetdir('*.*','请选择文件夹');%fliepath为文件夹路径 2. ...

  4. 使用C语言查看一个文件夹中所有文件及目录

    1.前言 1.1声明 文章中的文字可能存在语法错语以及标点错误,请谅解: 如果在文章中发现代码错误或其它问题请告知,感谢! 2.实现方法 为了使用C语言实现查看一个文件夹中的文件数量功能,可以使用di ...

  5. 获取文件夹中所有文件的文件名[重复]

    本文翻译自:Getting the filenames of all files in a folder [duplicate] Possible Duplicate: 可能重复: Read all ...

  6. mvfiles:一次性提取多个文件夹中的文件

      作者:吴玉轩 (南开大学) Stata 连享会: 知乎 | 简书 | 码云 | CSDN   Stata连享会 精品专题 || 精彩推文 2019暑期"实证研究方法与经典论文" ...

  7. VMware虚拟机文件夹中各文件作用详解

    VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...

  8. 记录一下提取文件夹中所有文件名字

    配置Opencv很有用 快速提取文件夹中所有文件的名称! - 简书 (jianshu.com)

  9. Flume监听文件夹中的文件变化,并把文件下沉到hdfs

    1.采集目录到HDFS 采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去 根据需求,首先定义以下3大要素 采集源,即source--监控文件目录 ...

  10. Java文件操作:文件夹中搜索文件

    在文件夹中搜索文件,找到的话将文件的绝对路径列表返回 /*** 递归查找文件* @param baseDirName 查找的文件夹路径* @param targetFileName 需要查找的文件名* ...

最新文章

  1. 手把手教你使用Flask轻松部署机器学习模型(附代码链接) | CSDN博文精选
  2. 问题解决10使用带有框架的页面跳转到登录页面时,登录页面只显示在子框架中,未能铺满整个浏览器--解决方案如下:...
  3. php插入mysql数据返回id
  4. git学习小结(未完待续)
  5. local map at cambridge
  6. mysql出现can t_php运行提示Can't connect to MySQL server on 'localhost'的解决方法
  7. 【遥感物候】1983-2012年时间序列中国地区GIMMS 3g NDVI下载(已进行旋转、格式转换、投影变换和裁剪)
  8. 开源PagerSlidingTabStrip的使用Tab与ViewPager的完美结合
  9. 提升你的开发效率,10 个 NPM 使用技巧
  10. 大数高精加减乘除(洛谷P1601、P2142、P1303、P1480题题解,Java语言描述)
  11. NLP之路-python爬虫
  12. mysql获取一行中多列的最大值_SQL 获取一行中多个字段的最大值
  13. 微信投票python脚本_微信投票python脚本
  14. javaScript判断数组内容去重方法
  15. drupal php 版本,纯PHP drupal主题
  16. 图片中隐藏信息——图片隐写术
  17. 2022年的职场会是什么样子?
  18. element-ui中select组件创建条目创建条目为空时报错的解决方案
  19. 【Linux-GNU编译器套件(gcc/g++/gfortran)离线编译安装】
  20. 鸿蒙系统推广时间,鸿蒙系统将全面推广,目标覆盖3亿台设备,第三方IoT可达1亿台...

热门文章

  1. 麻理工MIT的脑计划eyewire (顺便学习一下医学影像知识)
  2. 信息技术在园林绿化技师试题测试中的应用
  3. 创建自己的腾讯云存储桶,将图片上传到腾讯云,并实现父子之间的数据双向绑定
  4. xp系统计算机蓝屏,XP电脑蓝屏错误代码0*0000007E该怎么解决?
  5. 8月书讯(上)| 这些新书不可错过
  6. matlab茎叶图命令,[转载]转载:Stata命令(转自人大论坛)
  7. moment 的使用 当月第一天
  8. 南京信息工程大学计算机类专业排名,2019年南京信息工程大学优势专业排名及分数线...
  9. java 阴历转阳历,阳历转阴历工具类
  10. python-生成xlsx表格