1.将数据存储到文件中
Context类提供了openFileOutput(String name, int mode)方法,用于将数据存储到指定的内存文件中。第一个参数为文件名,默认存储到/data/data/<package name>/files/目录下,因此文件名不可以包含路径。第二个参数为打开文件的模式,该模式支持如下值:
MODE_PRIVATE:默认的操作方式,表示当指定同样文件名的时候,所写的内容会覆盖原来文件的内容。
MODE_APPEND:表示如果该文件已经存在,就往文件里追加内容,不存在就创建新文件。
openFileOutput()方法返回的是一个FileOutputStream对象,然后再将FileOutputStream包装成PrintStream,用PrintStream的print()方法将数据写到文件中。以下是一段简单的代码示例。
private void writeToFile() {
final String data = "Data to save";
final String FILE_NAME = "text.txt";
FileOutputStream outputStream;
PrintStream printStream = null;
try {
outputStream = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
printStream = new PrintStream(outputStream);
printStream.print(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(printStream != null) {
printStream.close();
}
}
}
2.从文件中读取数据
Context类提供了openFileInput(String name)方法,用于从指定的内存文件中读取数据。与将数据存储到文件中类似,首先用openFileInput()方法获得一个FileInputStream对象,然后用FileInputStream的available()方法获取文件长度,再用read()方法将文件中的数据读出。以下是一段简单的代码示例。
private String readFromFile() {
final String FILE_NAME = "text.txt";
FileInputStream inputStream = null;
String result = "";
try {
inputStream = openFileInput(FILE_NAME);
byte[] bytes = new byte[inputStream.available()];
int read = inputStream.read(bytes);
result = new String(bytes);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}