數據持久化存儲

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容