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中读取数据. 尤其在写入与读取两个方 ...
随机推荐
- Lineage逻辑回归分类算法
Lineage逻辑回归分类算法 线性回归和逻辑回归参考文章: http://blog.csdn.net/viewcode/article/details/8794401 http://www.cnbl ...
- POJ1456 Supermarket 并查集
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1456 题意概括 一家超市,要卖出N种物品(每种物品各一个),每种物品都有一个卖出截止日期Di(在该 ...
- 修改idea自动生成在C盘的文件路径,以免电脑越用越卡
1.看图一步一步来 2.将原来该位置的文件剪切到你指定的路径下 3.启动idea ,选择以前的配置即可
- 057 Hive项目案例过程
1.说明 这里只粘贴一张,图,主要针对的hive的项目的实践过程. 2.图 3.需求 统计PV 统计注册人数 => 这个是一个公司会关注的,每天的注册率. 统计ip 统计跳出率 => ip ...
- C#连接数据库MD5数据库加密
创建StringHelper类 首先数据库里的资料是加密了的. 创建将指定的字符串加密为MD5密文方法 public static string ToMD5(string source){ Strin ...
- rabbitmq学习(七) —— springboot下的可靠使用
前面的学习都是基于原生的api,下面我们使用spingboot来整合rabbitmq springboot对rabbitmq提供了友好支持,极大的简化了开发流程 引入maven <depende ...
- 探秘Tomcat(一)
前言:有的时候自己不知道自己是井底之蛙,这并没有什么可怕的,因为你只要蜷缩在方寸之间的井里,无数次的生活轨迹无非最终归结还是一个圆形:但是可怕的是有一天你不得不从井里跳出来生活,需要重新审视井以外的生 ...
- 利用django信号实现计数功能
本文主要知识点: 1.使用Django的signals来获取Model的新建/删除操作更新 2.使用数据库的select for update来正确处理并发的数据库操作 3.使用redis的sorte ...
- 洛谷.3437.[POI2006]TET-Tetris 3D(二维线段树)
题目链接 下落一个d*s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵 ...
- Python图形编程探索系列-06-按钮批量生产函数
设计任务 初步设计一个批量生产按钮的函数,根据需要的按钮数量,自动生成多少按钮. 函数设计 import tkinter as tk # 导入tkinter库 root = tk.Tk() # 建立程 ...