数据持久化

数据持久化

数据持久化是指将内存中的瞬时数据保存到存储设备,从而保证在程序关闭时这些数据任然不会丢失。Android下主要提供了三种方式用于简单的实现数据持久化的功能,它们分别是文件存储、SharedPreference存储以及数据库存储。这里只总结文件存储和SharedPreference存储,数据库存储放在下一篇中单独总结。


一.文件存储

文件存储是Android中最基本的一种数据存储方式,它会将所有数据原封不动的通过IO流保存在文件当中,所以它只适合用于存储简单的文本数据或者二进制数据。

1.使用openFileOutput()保存数据

在openFileOutput()方法中接收两个参数,第一个参数为文件名,此文件名不可以包含路径,因为其默认存在/data/data//files/目录下,第二个参数为操作模式MODE_PRIVATE或MODE_APPEND。此方法返回一个FileOutputStream对象,通过IO流即可将数据写入指定文件中:

 private void save(String mstring) {
        FileOutputStream fos;
        BufferedWriter writer = null;
        try {

            fos = openFileOutput("user_data", MODE_PRIVATE);
            writer = new BufferedWriter(new OutputStreamWriter(fos));
            writer.write(mstring);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

2.使用openFileInputStream()读取数据

private String restore(){
        BufferedReader reader = null;
        StringBuilder builder = null;
        try {       
            builder = new StringBuilder();
            String line = null;
            FileInputStream fis = openFileInput("user_data");
            reader = new BufferedReader(new InputStreamReader(fis));
            while ((line = reader.readLine()) != null){
                builder.append(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(reader != null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return builder.toString();
    }

二.SharedPreferences存储

不同于文件存在,SharedPreferences是通过键值对来存储数据的。要想使用SharedPreferences存储数据,首先要获得SharedPreferences对象。Android提供了三种方法。

1.Context类中的getSharedPreferences()方法;

SharedPreferences preferences = getSharedPreferences("share", MODE_PRIVATE);

2.Activity类中的getPreferences()方法;

SharedPreferences preferences = getPreferences(MODE_PRIVATE);

3.PreferenceManage类中的getDefaultSharedPreferences()方法。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

得到SharedPreferences对象后就可以使用它存储数据了。

1.向SharedPreferences文件存储数据


STEP 1:调用SharedPreferences对象的edit()方法获取一个Editor对象;

STEP 2:向Editor对象添加数据;

STEP 3:调用commit()方法提交,其内部是一个序列化的过程。

 SharedPreferences preferences = getSharedPreferences("shared", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("name","张三");
        editor.putInt("age",25);
        editor.commit();

2.从SharedPreferences中读取数据

SharedPreferences preferences1  = getSharedPreferences("shared",MODE_PRIVATE);
        String name = preferences1.getString("name", "");
        int age = preferences1.getInt("age", 0);
        Log.d(TAG,"name:" + name + " age:" + age);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值