「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」
Android—文件存储
文件存储是Android中最基础的一种数据存储方式,它不对存储的内容做任何的格式处理,所以数据都是原封不动保存在文件中的,所以它比较适用于存储一些简单的文本数据,如果想要使用文件存储的方式来保存一些较为复杂的文本数据,就需要定义一套自己的格式范围,这样就方便之后将数据从文本中重新解析出来。
1、将数据存储到文件中
Content类中提供了一个openFileOutput()方法将数据存储到指定文件中。这个方法可以带两个参数,第一个是文件名,文件默认存储的路径为、data/data//files/目录下的,第二个参数为文件的操作模式,操作模式主要有两种,MODE_PRIVATE和MODE_APPEND。MODE_PRIVATE为默认操作模式,该模式表示当文件有内容是,所写内容会覆盖原文件的内容,MODE_APPEND模式会追加内容在文件末尾。不存在就创建新文件。 OpenFileOutput()方法返回的是一个FileOutputStream对象,得到了这个对象之后就可以使用Java流的方式将数据写入到文件中,下面是一段代码,展示了如何将一段文本内容保存到文件中:
public void save(){
String data = "Data to save";
FileOutputStream out = null;
BufferedWriter write =null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
write = new BufferedWriter(new OutputStreamWriter(out));
write.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(write != null){
write.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
这里通过openFileOutput()方法构建出一个FileOutputStream对象,然后再借助它构建出一个OutputStreamWriter对象,接着再使用OutputStreamWriter构建出BufferedWriter 对象,这样就可以通过BufferedWriter 将文本内容写入到文件中。
2、从文件中读取数据
类似于将数据存储到文件中,context类中还提供了一个openFileInput()方法,用于从文件中读取数据,这个方法比openFileOutput()简单一点,只有一个参数,即要读取的文件名,然后系统会自动去默认的目录下加载这个文件,并返回一个FileInputStream对象,得到这个对象之后再通过Java流的方式读取出来。下面是一段代码,展示了如何从文件中读取数据:
public String loda(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileOutput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine())!=null){
content.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}
这里通过openFileInput()方法构建出一个FileInputStream对象,然后再借助它构建出一个InputStreamWriter对象,接着再使用InputStreamReader构建出BufferedReader 对象,这样就可以通过BufferedReader 进行一行行读取,把文件中所有的文本内容全部读取出来,并存放在一个StringBuilder对象中,最后将读取到的内容返回就可以了。