第一行代碼 讀筆⑥ (存儲)

數據存儲方案,詳解持久化技術

持久化技術 文件存儲 SharedPreferences存儲 SQLite數據庫存儲

持久化技術: 將內存中的瞬時數據保存到存儲設備中,其提供了一種機制讓數據再瞬時狀態與持久狀態之間相互轉換。
Android主要提供了三種方式:

  • 文件存儲:最基本的數據存儲方式,不對存儲數據進行任何格式化處理,適於存儲簡單文本數據或二進制數據。
  • SharedPreference存儲:Android平臺上一個輕量級的存儲類,保存一些常用的配置比如窗口狀態,提供了Android平臺常規的Long長 整形、Int整形、String字符串型的保存。 。
  • 數據庫存儲:Android上的SQLite是一款輕量級的關係型數據庫,支持標準SQL語法,遵循數據庫的ACID事物,功能強大方便。

文件存儲:
通過Java中的IO操作來進行實現,Android在Context類中封裝好J和讀取了輸入流和輸出流的獲取方法。
PS:創建的存儲文件默認保存在/data/data//files文件夾下。
絕對路徑:/data/data//files/filename。
Context:Context.getFilesDir()可以獲取到”/data/data//files”

操作:

  • 保存:通過Context.openFileOutput獲取輸出流,參數分別爲文件名和存儲模式。
  • 讀取:通過Context.openFileInput獲取輸入流,參數爲文件名。
  • 刪除:Context.deleteFile刪除指定的文件,參數爲將要刪除的文件的名稱。
  • 獲取:通過Context.fileList獲取files目錄下的所有文件名數組。

存儲模式:

  • Context.MODE_PRIVATE :爲默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下寫入的內容會覆蓋原文件的內容。
  • Context.MODE_APPEND: 檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
    PS:可以用”+”來選擇多種模式。
    其他還有MODE_WORLD_READABLE 與MODE_WORLD_WRITEABLE分別代表可被其他應用讀取與寫入。由於不安全,在4.2被廢棄。

SharedPreference存儲:它分爲多種權限,可以全局共享訪問,本質是基於XML文件存儲key-value鍵值對數據。haredPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。

需要先獲取SharePreference對象,有3種方式:

  • Context類中的getSharedPreferences(name,mode) :
    方法的第一個參數用於指定該文件的名稱,名稱不用帶後綴,後綴會由Android自動加上;
    方法的第二個參數指定文件的操作模式,共有四種操作模式。
    四種操作模式分別爲:

    1. MODE_APPEND: 追加方式存儲
    2. MODE_PRIVATE: 私有方式存儲,其他應用無法訪問
    3. MODE_WORLD_READABLE: 表示當前文件可以被其他應用讀取
    4. MODE_WORLD_WRITEABLE: 表示當前文件可以被其他應用寫入
  • Activity類中的getPreference(mode):
    類似於Context中的方法,但是隻接受一個模式爲參數,默認當前Activity類名位文件名

  • PreferencesManager類中的getDefaultSharePreference(context)方法:
    靜態方法,接受Context參數,自動使用當前程序的包名爲文件名。

存儲過程:

  • 先通過edit()方法得到SharedPreference.Editor對象。
  • 通過SharedPreference。Editor添加數據,使用其與數據類型相應的方法,如putBoolean(),putString()……
  • 使用commit()方法將添加的數據提交,完成。
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).editor();
editor.putString("name","Tom");
editor.getint("age",20);
.......
editor.commit();

讀取過程:
通過對於相應的SharedPreference對象中提供的get()方法獲取相應的數據。get()接受兩個參數,一爲存儲時的鍵值,二爲當找不到對應值時的默認返回值。

SharedPreference pref = getSharedPreference("datea",MODE_PRIVATE);
String name = pref.getStrign("name","");
int age = pref.getint("age",0);
........................

清除修改數據:
通過Editor實現:

SharedPreferences sp = getSharedPreferences("name", Context.MODE_PRIVATE);
Editor editor = sp.edit();  
editor.clear();  
editor.commit()

數據庫:
正在學習SQL數據庫…………

發佈了68 篇原創文章 · 獲贊 23 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章