知识库

wiki.linsakura.com

用户工具

站点工具


wiki:book:notes:android:第一行代码-android-第2版-郭霖:第6章

这是本文档旧的修订版!


第6章 数据存储全方案——详解持久化技术

简介

Android数据持久化3种方式:文件存储、SharedPreference存储、数据库存储。

文件存储

将数据保存到文件中

将inputText保存到data文件,存放在/data/data/com.example.filepersistencetest/files/

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.MODE_PRIVATE覆盖,Context.MODE_APPEND追加。

从文件中读取数据

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

TextUtils.isEmpty(inputText)判断字符串inputText是否为null或为空。

SharedPreferences 存储

3种得到SharedPreferences对象的方法

所有的文件都是存放在/data/data/<package_name>/shared_prefs/目录。
1. Context类中的getSharedPreferences()

SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();

"data"是文件名,会生成data.xmlMODE_PRIVATE是固定写法,表示只有当前程序才可进行读写。
2. Activity类中的getPreferences()
此方法会将当前活动的类名作为文件名。
3. PreferenceManager类中的getDefaultSharedPreferences()

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = pref.edit();

此方法固定文件名为<pakage_name>_preferences.xml

将数据存储到SharedPreferences中

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

会在/data/data/com.example.sharedpreferencestest/shared_prefs/data.xml生成文件,

data.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="name">Tom</string>
    <boolean name="married" value="false" />
    <int name="age" value="18" />
</map>

从SharedPreferences中读取数据

SharedPreferences pref = getSharedPreferences("data", MODE_PRIVATE);
String name = pref.getString("name", "");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married", false);

SQLite数据库

wiki/book/notes/android/第一行代码-android-第2版-郭霖/第6章.1649398203.txt.gz · 最后更改: 2022/04/08 14:10 由 博丽幻月