定义
文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何格式化处理,所有数据都是原封不动地保存到文件中。
适用范围
存储简单的文本数据或二进制数据
写入文件
public void saveData(String data){
//Custom content
data = "Data to be saved";
FileOutputStream outputStream = null;
BufferedWriter bufferedWriter = null;
try {
outputStream = openFileOutput("dataFile", Context.MODE_PRIVATE);
bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
bufferedWriter.write(data);
}catch (IOException e){
e.printStackTrace();
} finally {
try {
if (bufferedWriter != null){
bufferedWriter.close();
}
} catch (IOException e){
e.printStackTrace();
}
}
}
Context类中提供了一个openFileOutput()方法,可以将数据存储到指定文件中。openFileOutput()方法中接收两个参数,第一个参数为创建的文件名,注意这里的文件名不可以包含路径,因为所有的文件都是默认存储在/data/data/<packagename>/files目录下的。第二个参数为文件的操作模式(可参考Android Context操作模式)。openFileOutput()方法返回的是一个FileOutputStream对象,得到这个对象后就可以使用java流方式将数据写入文件了。
查看文件
可以通过以下步骤查看生成名称为dataFile的文件。
依次点击顶部View->Tool Windows->Device File Explorer->data->data->com.example.filestorage->files。可以看到files文件下包含了新创建名称问dataFile的文件,双击打开dataFile文件可查看内容。



读取文件
public String getData(){
FileInputStream inputStream = null;
BufferedReader bufferedReader = null;
StringBuilder content = new StringBuilder();
try {
inputStream = openFileInput("dataFile");
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while ((line = bufferedReader.readLine()) != null){
content.append(line);
}
}catch (IOException e){
e.printStackTrace();
} finally {
if (bufferedReader != null){
try {
bufferedReader.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return content.toString();
}
类似于写入文件,Context类中还提供了一个openFileInput()方法,用于从文件中读取数据。该方法只需传入一个参数,即传入文件名,然后系统会自动到文件目录下去加载该文件,并返回一个FileInputStream对象,得到这个对象后再通过java流的方式将数据读取出来。
网友评论