Android读写assets、raw、sdard和工程文件的方法
Android开发离不开对文件的操作,前面的文章“Android简易数据存储之SharedPreferences”和“Android数据存储之SQLite的操作”,分别讲解了简单的数据的存储和数据库数据的操作。然而,前面的两篇文章都未涉及具体文件的操作。下面来看下Android是怎么操作其内置目录文件及外部sdcard数据的。
环境:Android studio、海马玩模拟器
资源文件:
/assets目录下test.txt
aaaaaaaaaaaaaa bbbbbbb
/res/raw(需要手工创建)目录下rawfile.txt
raw file ddddddddddd eeeeeeeeee ffffffffff
一、读取assets目录下的文件
//读写assets目录下的文件InputStream is = getResources().getAssets().open("test.txt");Reader in = new InputStreamReader(is);BufferedReader bufferedReader = new BufferedReader(in);String line = null;while (null != (line = bufferedReader.readLine()) ){System.out.println("assets file==========" + line);}bufferedReader.close();in.close();is.close();
由于assets下的文件不会再R.java中生成相应的ID,因此Android提供了AssetManager的方法访问assets下的资源。
二、读取raw目录下的文件
//读取raw目录下的文件,raw位于res目录下,需要手工创建is = getResources().openRawResource(R.raw.rawfile);in = new InputStreamReader(is);bufferedReader = new BufferedReader(in);line = null;while (null != (line = bufferedReader.readLine()) ){System.out.println("rawfile==========" + line);}bufferedReader.close();in.close();is.close();
三、读写工程内部文件
//读写工程内部文件FileOutputStream fileOutputStream = openFileOutput("projectfile.txt", Context.MODE_PRIVATE);OutputStreamWriter osw = new OutputStreamWriter(fileOutputStream);BufferedWriter bw = new BufferedWriter(osw);bw.write("ooooooooooooooooooo");bw.close();osw.close();fileOutputStream.close();FileInputStream fileInputStream = openFileInput("projectfile.txt");InputStreamReader isr = new InputStreamReader(fileInputStream);char[] input = new char[fileInputStream.available()];isr.read(input);isr.close();fileInputStream.close();String str = new String(input);System.out.println("project file=============" + str);
四、读写sdcard文件
1、AndroidManifest.xml中添加权限控制
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
2、读写sdcard文件
//读写sdcard,需要在AndroidManifest.xml中添加权限说明//<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>File file = Environment.getExternalStorageDirectory();//获取sdcard路径if(file.exists()){//判断是否存在sdcardSystem.out.println("sdcard file path========" + file.getAbsolutePath());File myfile = new File(file, "myfile_sdcard.txt");myfile.createNewFile();FileOutputStream fos = new FileOutputStream(myfile);fos.write("AAAAAAAAAAa".getBytes());fos.flush();fos.close();}//读取sdcard文件File file1 = new File(file, "myfile_sdcard.txt");InputStream inputStream = new FileInputStream(file1);Reader reader = new InputStreamReader(inputStream);BufferedReader bufferedReader1 = new BufferedReader(reader);String iline = null;while(null != (iline = bufferedReader1.readLine())){System.out.println("from sdcard myfile_sdcard.txt============" + iline);}bufferedReader1.close();reader.close();inputStream.close();
五、将APP运行到模拟器中,此时可以看到如下的输出结果
09-13 09:44:57.520 2243-2243/com.example.ibm.dataoperate I/System.out﹕ assets file==========aaaaaaaaaaaaaa 09-13 09:44:57.524 2243-2243/com.example.ibm.dataoperate I/System.out﹕ assets file==========bbbbbbb 09-13 09:44:57.528 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========raw file 09-13 09:44:57.528 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========ddddddddddd 09-13 09:44:57.532 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========eeeeeeeeee 09-13 09:44:57.532 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========ffffffffff 09-13 09:44:57.544 2243-2243/com.example.ibm.dataoperate I/System.out﹕ project file=============ooooooooooooooooooo 09-13 09:44:57.552 2243-2243/com.example.ibm.dataoperate I/System.out﹕ sdcard file path========/mnt/sdcard 09-13 09:44:57.556 2243-2243/com.example.ibm.dataoperate I/System.out﹕ from sdcard myfile_sdcard.txt============AAAAAAAAAAa
上述四种操作Android文件的方式,各个处理方式都有所不同。
1、读取assets目录下的资源文件时需要通过getResources().getAssets()方法获取AssetManager的open方法来进行处理;
2、而读取raw目录下的资源文件则通过getResources().openRawResource(R.raw.资源名称)的方式来获取;
3、读写工程其他目录的文件则通过openFileOutput和openFileInput来进行处理;
4、最后sdcard文件的操作需要额外在AndroidManifest.xml中进行权限的声明,并通过Environment.getExternalStorageDirectory()获取sdcard的路径,剩下的就是Java对文件的操作了。
Android读写assets、raw、sdard和工程文件的方法相关推荐
- IAR版本不兼容时如何打开工程文件的方法
IAR版本不兼容打开工程文件的方法 常常看到初学ARM的人会问,到底是MDK for ARM好用还是IAR for ARM好用,这就可见MDK和IAR作为ARM编译器的统治地位,当然其它还有ARM公司 ...
- android+1m的大小,android raw读取超过1M文件的方法
近日在琢磨android系统,程序中用到了sqlite数据库,一切代码妥当,在发布时遇到点问题,就是raw单个文件不能超过1M,否则会报错"Data exceeds UNCOMPRESS_D ...
- Android项目gen目下没有R.class文件 解决方法
作为入门级的开发人员,实现某个功能经常需要去google或者百度案例,有些博主在展示代码的同时也非常乐于分享项目文件,赞一个~ 博文发布较早,工程文件的API版本很低,导入到我们现有的elipse开发 ...
- App inventor访问assets目录中的资源文件的方法
应用中需要打开一个本地的HTML文件.用AI伴侣调试的时候,上载的HTML文件被保存到手机的调试目录中(android/data/com.wxbit.appinventor.aicompanion3/ ...
- android 颜色资源文件,android中colors.xml颜色设置资源文件的方法
1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...
- android 中color目录,android中colors.xml颜色设置资源文件的方法
1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...
- IAR版本不兼容打开工程文件的方法
https://blog.csdn.net/jerrylwb/article/details/16916593 说起来本人用IAR也有好几年,从最开始的IAR for AVR到IAR FOR MSP4 ...
- android 从assets和res中读取文件(转)
1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译, ...
- Android从assets和res中读取文件
1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译, ...
最新文章
- stl中的list学习笔记
- Objective-C 中Socket常用转换机制(NSData,NSString,int,Uint8,Uint16,Uint32,byte[])
- IPC$连接常见问答
- 正则 实现等长度的分割字符串
- 数据结构四——散列表(上)
- 使用IntelliJ IDEA 2020 高效开发 springboot项目
- 分析了 Stack Overflow、Reddit 等 9 个榜单,Python 第一的地位稳了!
- 在SharePoint2007中使用TimeJob.
- 计算机管理创建超级用户,win10家庭版怎么开启Administrator超级管理员帐户
- Cisco NTP配置
- c语言小兔子原来有1个萝卜,小兔子和小狐狸的100个睡前晚安小故事
- 网络流量监控(局域网)
- UG二次开发GRIP刻字
- 电商打折套路分析 —— Python数据分析练习
- 数字摄影测量考试复习名词解释
- R语言入门——NA、NAN、Inf(缺失值的识别)
- Python cv2(Opencv) Canny边缘检测 和 傅里叶变换
- HIS系统门急诊医保实时结算接口测试
- 【C++碎碎念】函数
- elementui from表单提交_vue+element-ui el-form表单验证及提交验证
热门文章
- 小米6 android os,脱离安卓!小米6刷入全新系统:界面炫酷,可流畅日常使用!...
- python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...
- docker-engine安装好了,下一步该做什么?
- 曲线 线性回归_机器学习笔记 线性回归
- MATLAB-循环类型相关(for while break continue)
- @angular/core里的 NgZone -使得Angular不跟踪变化
- php 接收curl json数据格式,curl发送 JSON格式POST数据的接收,以及在yii2框架中的实现原理【精细剖析】...
- android bitmap 占用内存大小,drawable与bitmap内存占用大小
- java中的取模_Java 中的取模和取余
- Shift Dot_JAVA