android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput
一:第一种方式就是像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中,这个例子也比较简单只有一个类。
先看一下运行后的效果吧。
- package jcodecraeer.com;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import org.apache.http.util.EncodingUtils;
- import android.app.Activity;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.widget.TextView;
- public class Activity01 extends Activity{
- //常量,为编码格式
- public static final String ENCODING = "UTF-8";
- //定义文件的名称
- String fileName = "test.txt";
- //写入和读出的数据信息
- String message = "欢迎大家来www.jcodecraeer.com";
- TextView textView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- writeFileData(fileName, message);
- String result = readFileData(fileName);
- textView = (TextView)findViewById(R.id.tv);
- textView.setTextColor(Color.GREEN);
- textView.setTextSize(20.0f);
- textView.setText(result);
- }
- //向指定的文件中写入指定的数据
- public void writeFileData(String filename, String message){
- try {
- FileOutputStream fout = openFileOutput(filename, MODE_PRIVATE);//获得FileOutputStream
- //将要写入的字符串转换为byte数组
- byte[] bytes = message.getBytes();
- fout.write(bytes);//将byte数组写入文件
- fout.close();//关闭文件输出流
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- //打开指定文件,读取其数据,返回字符串对象
- public String readFileData(String fileName){
- String result="";
- try {
- FileInputStream fin = openFileInput(fileName);
- //获取文件长度
- int lenght = fin.available();
- byte[] buffer = new byte[lenght];
- fin.read(buffer);
- //将byte数组转换成指定格式的字符串
- result = EncodingUtils.getString(buffer, ENCODING);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return result;
- }
- }
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0714/1437.html
android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput的更多相关文章
- Android中使用SDcard进行文件的读取
来自:http://www.cnblogs.com/greatverve/archive/2012/01/13/android-SDcard.html 平时我们需要在手机上面存储想音频,视频等等的大文 ...
- java一行一行写入或读取数据
原文:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 假如E:/phsftp/evdokey目录下有个evdokey_2 ...
- iOS中plist的创建,数据写入与读取
iOS中plist的创建,数据写入与读取 Documents:应用将数据存储在Documents中,但基于NSuserDefaults的首选项设置除外Library:基于NSUserDefaults的 ...
- Java Web SSH框架总是无法写入无法读取Cookie
不关乎技术,关乎一个小Tips: 默认情况下,IE和Chrome内核的浏览器会认为http://localhost为无效的域名,所以不会保存它的cookie,使用http://127.0.0.1访问程 ...
- php 如何写入、读取word,excel文档
如何在php写入.读取word文档 <? //如何在php写入.读取word文档 // 建立一个指向新COM组件的索引 $word = new COM("word.applicatio ...
- Java笔记--java一行一行写入或读取数据
转自 Ruthless java一行一行写入或读取数据 链接:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 假如E:/ ...
- 蜗牛爱课- iOS中plist的创建,数据写入与读取
iOS中plist的创建,数据写入与读取功能创建一个test.plist文件-(void)triggerStorage{ NSArray *paths=NSSearchPathForDirect ...
- HDFS写入和读取流程
HDFS写入和读取流程 一.HDFS HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而 ...
- java处理Excel文件---excel文件的创建,删除,写入,读取
这篇文章的代码是我封装的excel处理类,包含推断excel是否存在,表格索引是否存在,创建excel文件,删除excel文件,往excel中写入信息,从excel中读取数据. 尤其在写入与读取两个方 ...
随机推荐
- 关于tomcat性能优化
前言 关于 Tomcat 性能调优,一直以来就是运维面试的一个重要话题.今天我们就简单聊聊 Tomcat 如何进行性能优化? 首先声明,我不会去说 Tomcat 是什么,内部结构,原理什么的.我不懂. ...
- Unity 之 插件下载
Inventory Pro2.3.1: https://mega.nz/#!MIIx1bqI!_nTHyvT1IJsAxOtSEp_cSnc2OL9pqF3EBXS_N143_X8 NGUI 3.11 ...
- 关于BeanUtils.copyProperties() 用法及区别
这两个类在不同的包下面,而这两个类的copyProperties()方法里面传递的参数赋值是相反的. 例如:a,b为对象BeanUtils.copyProperties(a, b); BeanUtil ...
- 启用mysql的sql日志
在mysql命令行或者客户端管理工具中执行:SHOW VARIABLES LIKE "general_log%"; 结果: general_log OFFgeneral_log_f ...
- JAVA编码 —— 字符串关键字内容替换
前言 工作中,我们可能遇到字符串内容替换的场景.例如:我们需要将一个字符串凡是 “#” 标注的,分别替换为不同的内容,那我们应该怎么做呢? 分析,一个字符串可能含有多个“#”,每个 “#”又对应不同的 ...
- go语言学习-基础知识
go程序的基本结构 一个可以最简单的可运行的go程序需要满足下面两个条件: 有一个main()函数 main()函数在main包中 例如: 在go语言中的 hello world 程序如下: // m ...
- Nuxt.js 如何在 asyncData中 请求数据 ,并将拿到的数据传给子组件
说明:同接口请求一样,也可以进行数据的处理:return 中 左侧的变量 可以直接拿到在页面上使用,也可以传递给子组件 下面再给出一段代码,方便觉得有用的.却又不想手敲的朋友们: async as ...
- 基于zepto的移动端轻量级日期插件
前言 做过移动Web开发的同学都知道,移动端日期选择是很常见的需求.在PC端,我们有很丰富的选择,比较出名的就有Mobiscroll和jQuery UI Datepicker.个人看来,这些插件存在的 ...
- activate-power-mode 插件 安装 设置 IDEA
作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com 可用 摇 shake 粒子 particle ...
- tcp keepalive选项
之前一直对tcp keepalive选项理解有误, 以为通过setsockopt函数设置SO_KEEPALIVE和相关参数后该socket则使用设置的keepalive相关参数 否则使用系统默认的:k ...