【第一行代码】FilePersistenceTest

数据持久化

在应用关闭或者机器关闭的时候,将应用的数据保存到存储设备中,而不是内存中;那么实现数据持久化功能 Android 提供了三种方式,分别是文件存储, SharedPreference 存储和数据库存储;

这篇文章将介绍文件存储的方式;有关其他两种方式的存储请参阅文章 SharedPreferenceTest, DatabaseTest, LitePalTest

文件存储

不对存储的内容进行任何的格式化处理,所有数据都原封不动的保存到文件中,当然是可以自行加解密,所以比较适合用于存储简单的文本数据或二进制数据;

如果想用文件保存一些较为复杂的文本数据,就需要定义一套格式规范,比如常见的 json 格式;

使用方法

存储数据到文件中

Context 类提供了一个 openFileOutput() 方法,可以将数据存储到指定的文件中,该方法包含两个参数:

  1. 第一个参数就是文件名,可以不包含路径,因为路径默认存储位置是 data/data//files/;

  2. 第二个参数是文件的操作模式,可以设置为 MODE_PRIVATE 和 MODE_APPEND,第一个是默认模式,表示当指定文件存在时,所写入的内容将会覆盖原文件,后一个表示当文件存在时,将会追加内容;

该方法返回一个 FileOutputStream 对象,得到该对象就可以使用 java 流的方式将数据写入到文件中了;

关键代码示例:

public void save(String inputText) {
    FileOutputStream out = null;
    BufferedWriter writer = null;
    try {
        out = openFileOutput("data", Context.MODE_PRIVATE);
        writer = new BufferedWriter(new OutputStreamWriter(out));
        writer.write(inputText);
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        try {
            if(writer != null) {
                writer.close();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

从文件中读取数据

一样的,Context 类提供了一个 openFileInput() 方法,用于从文件中读取数据,只包含一个参数,即要读取的文件名;

该方法返回一个 FileInputStream 对象,利用该对象就可以读取到文件中的内容了;

关键代码示例:

private String load() {
    FileInputStream in = null;
    BufferedReader reader = null;
    StringBuilder content = new StringBuilder();
    try {
        in = openFileInput("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();
}

项目源码下载

Github

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值