美文网首页
数据持久化存储

数据持久化存储

作者: 乐潇 | 来源:发表于2017-04-20 17:41 被阅读0次

1. 文件存储

文件存储不对存储的内容进行任何的格式化处理,所有数据都是原封不动保存到文件当中,因而适合用于存储一些简单的文本数据或二进制数据。

  • 将数据存储到文件中

    public void save() {
        string data = "Data to save";
        FileOutputStream out = null;
        BufferedWriter writer = null;
        try {
            out = openFileOutput("data", Context.MODE_PRIVATE);
            writer = new BufferedWrider(new OutputStreamWriter(out));
            writer.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        } fainally {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    
  • 从文件中读取数据

    public 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();
    }
    

2. SharedPreferences 存储

SharedPreferences 是使用键值对的方式来存储数据的。当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。SharedPreferences 支持多种不同的数据类型存储,如果存储的数据类型是整形,那么读取出来的数据也是整型;如果存储的数据是一个字符串,取出来的数据仍然是字符串。

① 将数据存储到 SharedPreferences 中

首先需要获取到 SharedPreferences 对象

  • Context 类中的 getSharedPreferences() 方法:

接收两个参数,第一个用于指定 SharedPreferences 文件的名称,若指定的文件不存在则会创建一个,文件存放于/data/data/<package name>/shared_prefs/目录下。
第二个参数用于指定操作模式,只有 MODE_PRIVATE 可选,表示只有当前程序才可对该 SharedPreferences 文件进行读写。

  • Activity 类中的 getPreferences() 方法:

类似 Context 中的 getSharedPreferences() 方法,但只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。

  • PreferenceManager 类中的 getDefaultSharedPreferences()方法:

这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。

向 SharedPreferences 文件中存储数据

  1. 调用 SharedPreferences 对象的 edit() 方法来获取一个 SharedPreferences.Editor 对象。

  2. 向 SharedPreferences.Editor 对象中添加数据。

  3. 调用 apply() 方法将添加的数据提交。

关键代码片段:

    {
    SharedPreferences.Editor editor = getSharedPreferences(
        "data", MODE_PRIVATE).edit();
    editor.putString("name", "Tom");
    editor.putInt("age", 28);
    editor.putBoolean("married", false);
    editor.apply();
    }

② 从 SharedPreferences 中读取数据

关键代码片段

{
// 读取数据
SharedPreferences pref = getSharedPreferences(
    "data", MODE_PRIVATE);
String name = pref.getString("name", "");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married", false);
// 打印日志
Log.d("MainActivity", "name is " + name);
Log.d("MainActivity", "age is " + age);
Log.d("MainActiviry", "married is " + married);
}

3. SQLite 数据库存储

4. LitePal

相关文章

网友评论

      本文标题:数据持久化存储

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