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和工程文件的方法相关推荐

  1. IAR版本不兼容时如何打开工程文件的方法

    IAR版本不兼容打开工程文件的方法 常常看到初学ARM的人会问,到底是MDK for ARM好用还是IAR for ARM好用,这就可见MDK和IAR作为ARM编译器的统治地位,当然其它还有ARM公司 ...

  2. android+1m的大小,android raw读取超过1M文件的方法

    近日在琢磨android系统,程序中用到了sqlite数据库,一切代码妥当,在发布时遇到点问题,就是raw单个文件不能超过1M,否则会报错"Data exceeds UNCOMPRESS_D ...

  3. Android项目gen目下没有R.class文件 解决方法

    作为入门级的开发人员,实现某个功能经常需要去google或者百度案例,有些博主在展示代码的同时也非常乐于分享项目文件,赞一个~ 博文发布较早,工程文件的API版本很低,导入到我们现有的elipse开发 ...

  4. App inventor访问assets目录中的资源文件的方法

    应用中需要打开一个本地的HTML文件.用AI伴侣调试的时候,上载的HTML文件被保存到手机的调试目录中(android/data/com.wxbit.appinventor.aicompanion3/ ...

  5. android 颜色资源文件,android中colors.xml颜色设置资源文件的方法

    1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...

  6. android 中color目录,android中colors.xml颜色设置资源文件的方法

    1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...

  7. IAR版本不兼容打开工程文件的方法

    https://blog.csdn.net/jerrylwb/article/details/16916593 说起来本人用IAR也有好几年,从最开始的IAR for AVR到IAR FOR MSP4 ...

  8. android 从assets和res中读取文件(转)

    1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译, ...

  9. Android从assets和res中读取文件

    1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译, ...

最新文章

  1. stl中的list学习笔记
  2. Objective-C 中Socket常用转换机制(NSData,NSString,int,Uint8,Uint16,Uint32,byte[])
  3. IPC$连接常见问答
  4. 正则 实现等长度的分割字符串
  5. 数据结构四——散列表(上)
  6. 使用IntelliJ IDEA 2020 高效开发 springboot项目
  7. 分析了 Stack Overflow、Reddit 等 9 个榜单,Python 第一的地位稳了!
  8. 在SharePoint2007中使用TimeJob.
  9. 计算机管理创建超级用户,win10家庭版怎么开启Administrator超级管理员帐户
  10. Cisco NTP配置
  11. c语言小兔子原来有1个萝卜,小兔子和小狐狸的100个睡前晚安小故事
  12. 网络流量监控(局域网)
  13. UG二次开发GRIP刻字
  14. 电商打折套路分析 —— Python数据分析练习
  15. 数字摄影测量考试复习名词解释
  16. R语言入门——NA、NAN、Inf(缺失值的识别)
  17. Python cv2(Opencv) Canny边缘检测 和 傅里叶变换
  18. HIS系统门急诊医保实时结算接口测试
  19. 【C++碎碎念】函数
  20. elementui from表单提交_vue+element-ui el-form表单验证及提交验证

热门文章

  1. 小米6 android os,脱离安卓!小米6刷入全新系统:界面炫酷,可流畅日常使用!...
  2. python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...
  3. docker-engine安装好了,下一步该做什么?
  4. 曲线 线性回归_机器学习笔记 线性回归
  5. MATLAB-循环类型相关(for while break continue)
  6. @angular/core里的 NgZone -使得Angular不跟踪变化
  7. php 接收curl json数据格式,curl发送 JSON格式POST数据的接收,以及在yii2框架中的实现原理【精细剖析】...
  8. android bitmap 占用内存大小,drawable与bitmap内存占用大小
  9. java中的取模_Java 中的取模和取余
  10. Shift Dot_JAVA