地址
http://blog.csdn.net/xiangyong_1521/article/details/78665993
目录
- 概念
- 存储
- 读取
概念
文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。它比较适合用于存储一些简单的文本数据或二进制数据。
存储
Context 类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中。
这个方法接收两个参数,第一个参数是文件创建时使用的名称,注意这里指定的文件名不可以包含路径,因为所有文件都是默认储存到 /data/data/<包名>/files/ 目录下的。
第二个参数是文件的操作模式,主要有两种模式可选:
MODE_PRIVATE(覆盖原文)
MODE_APPEND(追加内容) 。
openFileOutput() 方法返回的是一个 FileOutputStream 对象,得到这个对象之后就可以使用 Java 流的方式将数据写入到文件中了。
int i = 0;
String md = " data";
FileOutputStream fileOutputStream;
BufferedWriter bufferedWriter;
private void inSave() {
try {
String out = md + (i++);
//设置文件名称,以及存储方式
fileOutputStream = openFileOutput("md.txt",Context.MODE_APPEND);
//创建一个OutputStreamWriter对象,传入BufferedWriter的构造器中
bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
//向文件中写入数据
bufferedWriter.write(out);
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
bufferedWriter.close();
} catch (Exception e2) {
}
}
}
读取
类似于将数据存储到文件中,Context 类中还提供了一个 openFileInput() 方法,用于从文件中读取数据。
openFileInput() 方法只接收一个参数,即要读取的文件名,然后系统会自动到 /data/data/<包名>/files/ 目录下去加载这个文件,并返回一个 FileInputStream 对象。
BufferedReader bufferedReader;
FileInputStream fileInputStream;
StringBuilder builder;
private void inRead() {
try {
//设置将要打开的存储文件名称
fileInputStream = openFileInput("md.txt");
//FileInputStream -> InputStreamReader ->BufferedReader
bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
//读取每一行数据,并追加到StringBuilder对象中,直到结束
builder = new StringBuilder();
String line = new String();
//读取每一行数据,并追加到StringBuilder对象中,直到结束
while ((line = bufferedReader.readLine()) != null) {
builder.append(line);
textView.setText(""+builder);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
![](https://img.haomeiwen.com/i8967864/9d3aa5abd4e96f7d.png)
其他
- 如果不能判定一部手机是否存在sdcard,如果没有,则需要提供其他解决方法,比如
保存到手机存储;
提示不存在sdcard;
可以使用:
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//执行存储sdcard方法
}
else{
//存储到手机中,或提示
Toast.makeText(this, "读取失败,SD卡不存在!", Toast.LENGTH_LONG).show();
}
网友评论