一:第一种方式就是像Java平台下的实现方式一样通过构造器直接创建,如果需要向打开的文件末尾写入数据,可以通过使用构造器FileOutputStream(File file, boolean append)将 append设置为true来实现。不过需要注意的是采用这种方式获得FileOutputStream 对象时如果文件不存在或不可写入时,会抛出 FileNotFoundException 异常。

二:第二种获取 FileInputStream 和
FileOutputStream 对象的方式是调用 Context.openFileInput 和
Context.openFileOutput两个方法来创建。除了这两个方法外,Context对象还提供了其他几个用于对文件操作的方法,如下所示

Context对象中文操作的API及说明

方法名 说明
openFileInput(String filename) 打开应用程序私有目录下的的指定私有文件以读入数据,返回一个FileInputStream 对象
openFileOutput

打开应用程序私有目录下的的指定私有文件以写入数据,返回一个FileOutputStream 对象,

如果文件不存在就创建这个文件。

fileList() 搜索应用程序私有文件夹下的私有文件,返回所有文件名的String数组
deleteFile(String fileName) 删除指定文件名的文件,成功返回true,失败返回false

在使用openFileOutput方法打开文件以写入数据时,需要指定打开模式。默认为零,即MODE_PRIVATE。不同的模式对应的的含义如下:

openFileOutput方法打开文件时的模式

常量   含义
MODE_PRIVATE 默认模式,文件只可以被调用该方法的应用程序访问
MODE_APPEND   如果文件已存在就向该文件的末尾继续写入数据,而不是覆盖原来的数据。
MODE_WORLD_READABLE 赋予所有的应用程序对该文件读的权限。
MODE_WORLD_WRITEABLE   赋予所有的应用程序对该文件写的权限。

下面通过一个小例子来说明Android平台下的文件I/O 操作方式,主要功能是在应用程序私有的数据文件夹下创建一个文件并读取其中的数据显示到屏幕的 TextView中,这个例子也比较简单只有一个类。
先看一下运行后的效果吧。

  1. package jcodecraeer.com;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import org.apache.http.util.EncodingUtils;
  5. import android.app.Activity;
  6. import android.graphics.Color;
  7. import android.os.Bundle;
  8. import android.widget.TextView;
  9. public class Activity01 extends Activity{
  10. //常量,为编码格式
  11. public static final String ENCODING = "UTF-8";
  12. //定义文件的名称
  13. String fileName = "test.txt";
  14. //写入和读出的数据信息
  15. String message = "欢迎大家来www.jcodecraeer.com";
  16. TextView textView;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. writeFileData(fileName, message);
  22. String result = readFileData(fileName);
  23. textView = (TextView)findViewById(R.id.tv);
  24. textView.setTextColor(Color.GREEN);
  25. textView.setTextSize(20.0f);
  26. textView.setText(result);
  27. }
  28. //向指定的文件中写入指定的数据
  29. public void writeFileData(String filename, String message){
  30. try {
  31. FileOutputStream fout = openFileOutput(filename, MODE_PRIVATE);//获得FileOutputStream
  32. //将要写入的字符串转换为byte数组
  33. byte[] bytes = message.getBytes();
  34. fout.write(bytes);//将byte数组写入文件
  35. fout.close();//关闭文件输出流
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. //打开指定文件,读取其数据,返回字符串对象
  41. public String readFileData(String fileName){
  42. String result="";
  43. try {
  44. FileInputStream fin = openFileInput(fileName);
  45. //获取文件长度
  46. int lenght = fin.available();
  47. byte[] buffer = new byte[lenght];
  48. fin.read(buffer);
  49. //将byte数组转换成指定格式的字符串
  50. result = EncodingUtils.getString(buffer, ENCODING);
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. }
  54. return result;
  55. }
  56. }

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0714/1437.html

android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput的更多相关文章

  1. Android中使用SDcard进行文件的读取

    来自:http://www.cnblogs.com/greatverve/archive/2012/01/13/android-SDcard.html 平时我们需要在手机上面存储想音频,视频等等的大文 ...

  2. java一行一行写入或读取数据

    原文:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 假如E:/phsftp/evdokey目录下有个evdokey_2 ...

  3. iOS中plist的创建,数据写入与读取

    iOS中plist的创建,数据写入与读取 Documents:应用将数据存储在Documents中,但基于NSuserDefaults的首选项设置除外Library:基于NSUserDefaults的 ...

  4. Java Web SSH框架总是无法写入无法读取Cookie

    不关乎技术,关乎一个小Tips: 默认情况下,IE和Chrome内核的浏览器会认为http://localhost为无效的域名,所以不会保存它的cookie,使用http://127.0.0.1访问程 ...

  5. php 如何写入、读取word,excel文档

    如何在php写入.读取word文档 <? //如何在php写入.读取word文档 // 建立一个指向新COM组件的索引 $word = new COM("word.applicatio ...

  6. Java笔记--java一行一行写入或读取数据

    转自 Ruthless java一行一行写入或读取数据 链接:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 假如E:/ ...

  7. 蜗牛爱课- iOS中plist的创建,数据写入与读取

    iOS中plist的创建,数据写入与读取功能创建一个test.plist文件-(void)triggerStorage{    NSArray *paths=NSSearchPathForDirect ...

  8. HDFS写入和读取流程

    HDFS写入和读取流程 一.HDFS HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而 ...

  9. java处理Excel文件---excel文件的创建,删除,写入,读取

    这篇文章的代码是我封装的excel处理类,包含推断excel是否存在,表格索引是否存在,创建excel文件,删除excel文件,往excel中写入信息,从excel中读取数据. 尤其在写入与读取两个方 ...

随机推荐

  1. js自定义修改复选框单选框样式,清除复选框单选框默认样式

    之前做项目的时候,也遇到过需要按照设计稿把<input type="checkbox">和<input type="radio">的默认 ...

  2. 【Java】 剑指offer(9) 斐波那契数列及青蛙跳台阶问题

     本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项 ...

  3. 【Java】 剑指offer(13) 剪绳子

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 给你一根长度为n绳子,请把绳子剪成m段(m.n都是整数,n> ...

  4. maven添加插件,与maven打包

    1.编译插件 添加编译器插件来告诉 Maven 使用哪个 JDK 版本是用来编译项目. 2.pom <plugin> <groupId>org.apache.maven.plu ...

  5. 《Gradle权威指南》--Groovy基础

    No1: Groovy中分号不是必须的 No2: Groovy中,单引号和双引号都可以定义一个字符串常量,不同的是单引号标记的是纯粹的字符串常量,而不是对字符串里的表达式做运算,但是双引号可以. ta ...

  6. hdu 1002 A + B Problem II【大数加法】

    题目链接>>>>>> 题目大意:手动模拟大数加法,从而进行两个大数的加法运算 #include <stdio.h> #include <strin ...

  7. Python问题之“NameError: name 'reload' is not defined”

    出现这个错误的原因是你使用的Python版本已经不再使用了 在Python2.x中会用到reload来解决中文乱码问题 import sys reload(sys) sys.setdefaultenc ...

  8. 在web.xml中添加配置解决hibernate 懒加载异常

    在web.xml添加如下,注意:在配置在struts2的拦截器之前,只能解决请求时出现的懒加载异常:如果没有请求,还需要lazy属性的添加(比如过滤器) <!-- 配置Spring的用于解决懒加 ...

  9. Convert a VMDK (VMWare) file to VHDX (Hyper-V)

    https://www.meziantou.net/2016/09/09/convert-a-vmdk-vmware-file-to-vhdx-hyper-v Microsoft provides a ...

  10. Wed 基础

    HTTP协议 www服务应用的默认端口为80 https加密服务的默认端口为443 常见状态码及其对应的作用 http://oldboy.blog.51cto.com/2561410/716294 2 ...