1.文件保存概述
- Android允许使用文件对一些信息进行保存。
文件存储在data/data/包名/files/目录下。
2.具体方法
2.1 写入文件
- 关键代码
Contex类中提供了openFileOutput()方法,
openFileOutput(文件名,操作模式)
文件名为保存文件的文件名。操作模式有MODE_PRIVATE和MODE_APPEND两种。
模式 | 作用 |
---|---|
MODE_PRIVATE | 如果没有就新建,如果有就覆盖其中内容 |
MODE_APPEND | 如果没有就新建,如果有就追加在其后 |
-
FileOutputStream->OutputStreamWriter->BufferedWriter
使用BufferedWirter的writer()方法写入数据,写入之后使用close()关闭。
2.2 读出文件
- Contex类中提供了openFileInput()方法,
openFileInput(文件名)
文件名为保存文件的文件名。 -
FileInputStream->InputStreamReader->BufferedReader
使用BufferedReader的readLine()方法一行一行的读入,读完后使用close()关闭,存入StringBuilder的实例化对象中,再使用toString()方法转化为String类型的数据。
3.例子
- 覆盖写入文件代码:
public void outputFilePrivate() {
FileOutputStream flieOS = null;
BufferedWriter bfWriter = null;
try {
flieOS = openFileOutput("data2", Context.MODE_PRIVATE);
bfWriter = new BufferedWriter(new OutputStreamWriter(flieOS));
bfWriter.write(edtWrite.getText().toString());
Toast.makeText(this, edtWrite.getText().toString(), Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bfWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 追加写入文件代码:
public void outputFileAppend() {
FileOutputStream flieOS = null;
BufferedWriter bfWriter = null;
try {
flieOS = openFileOutput("data2", Context.MODE_APPEND);
bfWriter = new BufferedWriter(new OutputStreamWriter(flieOS));
bfWriter.write(edtWrite.getText().toString());
Toast.makeText(this, edtWrite.getText().toString(), Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bfWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 读出文件代码:
public void inputFile() {
FileInputStream fileIS = null;
BufferedReader bfReader = null;
try {
fileIS = openFileInput("data2");
bfReader = new BufferedReader(new InputStreamReader(fileIS));
String text = bfReader.readLine();
edtRead.setText(text);
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bfReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果图如下:
-
覆盖写入
覆盖写入 -
读取文件
读取文件 -
追加写入
-
读取文件
读取文件
网友评论