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 文件中存儲數據
調用 SharedPreferences 對象的 edit() 方法來獲取一個 SharedPreferences.Editor 對象。
向 SharedPreferences.Editor 對象中添加數據。
調用 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);
}