文件存储可以存储些简单的文本数据。
1、将数据写入文本,openFileOutput是抽象类Context中的方法,类ContextWrapper继承Context并实现了此方法,此方法有两个参数,第一个是文件名,无后缀的话就是一个无后缀的文件,文件默认放在/data/data/包名/files路径下,第二个是模式,MODE_PRIVATE指的是写入的内容会覆盖掉原文件的内容,MODE_APPEND表示在原文件的内容后面加上此次的内容。方法的返回值FileOutputStream。
实现方法如下:
FileOutputStream fileOutputStream = null;
BufferedWriter bufferedWriter = null;
try {
fileOutputStream = openFileOutput("data.txt", MODE_PRIVATE);
bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
bufferedWriter.write("hello world\n");
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果如下:
2、从文件读取数据,使用Context类的openFileInput方法,参数为文件名,读取路径为/data/data/包名/files,返回值FileInputStream。
实现方法如下:
FileInputStream inputStream = null;
BufferedReader bufferedReader = null;
StringBuilder stringBuilder = new StringBuilder();
try {
inputStream = openFileInput("data.txt");
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
if (stringBuilder != null) {
Log.i(TAG, stringBuilder.toString());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果如下: