美文网首页
持久化技术之文件存储

持久化技术之文件存储

作者: 浅_若清风 | 来源:发表于2021-06-11 17:57 被阅读0次
定义

文件存储是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文件可查看内容。


img_1.png
img_2.png img_3.png
读取文件
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流的方式将数据读取出来。

相关文章

网友评论

      本文标题:持久化技术之文件存储

      本文链接:https://www.haomeiwen.com/subject/qoixeltx.html