Android—文件存储

784 阅读3分钟

「这是我参与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对象中,最后将读取到的内容返回就可以了。