天天看點

android第一行代碼學習筆記——資料存儲(檔案存儲和SharedPreferences存儲)持久化技術

持久化技術

資料持久化就是指将記憶體中的瞬時資料儲存到儲存設備中,android中主要提供了三種方式:檔案存儲,SharedPrefences存儲以及資料庫存儲

檔案存儲

簡介

檔案存儲不對存儲的内容進行任何的格式化處理,所有資料都是原封不動的儲存到檔案當中,比較适合存儲一些簡單的文本資料或二進制資料

内容

存儲

  1. 使用Context類的openFileOutput()方法獲得一個FileOutputStream對象,然後使用java的IO流将資料存儲到指定的檔案中
  2. 該方法接收兩個參數:第一個參數是檔案名,第二個參數是檔案的操作模式。

    檔案名不可以包含路徑,所有檔案都是預設存儲到/data/data/< package name>files/目錄下的。

    檔案操作模式有兩種可以選:MODE_PRIVATE(預設的操作模式,若檔案存在,則覆寫原檔案中的内容)和MODE_APPEND(若檔案存在,則追加寫入,若不存在,則建立新檔案)

讀取

  1. 從檔案中讀取資料:使用Context類的openFileInput()方法獲得FileInputStream對象,然後使用java的IO流進行檔案讀取。
  2. 該方法隻接受一個參數,即要讀取的檔案名,然後系統會自動到/data/data/< package name>files/檔案下加載這個問價,并傳回一個FileInputStream對象,然後通過java的IO流将資料讀取出來。

SharedPreferences存儲

簡介

SharedPreferences使用鍵值對的方式來存儲資料,當儲存一條資料時需要給這條資料提供一個鍵,然後在讀取資料時通過鍵将對應的值讀取出來。SharedPreferences還支援多種不同的資料類型存儲

内容

  • 要使用SharedPreferences來存儲資料,必須先擷取到SharedPreferences對象。android中提供了三種方法擷取SharedPreferences對象:
    • Context類中的getSharedPreferences()方法
      • 此方法接受兩個參數:第一個參數指定SharedPreferences檔案的名稱,第二個參數用于指定操作模式,目前隻有MODE_PRIVATE這一種模式,表示隻有目前的應用程式才可以對這個SharedPreferences檔案進行讀寫
    • Activity類中的getPreferences()方法
      • 該方法和Context類的getSharedPreferences()方法類似,但他隻接受一個操作模式參數,此方法會自動将目前活動的類名作為SharedPreferences的檔案名
    • PreferenceManager類中的getDefaultSharedPreferences()方法
      • 這是一個靜态方法,它接受一個Context參數,并自動使用目前應用程式的包名作為字首來命名SharedPreferences檔案。
  • 向SharedPreferences檔案中存儲資料,主要分為三步:
    • 調用SharedPreferences對象的edit()方法來擷取一個SharedPreferences.Editor對象
    • 向SharedPreferences.Editor對象中調用putXxx()方法添加資料
    • 調用apply()方法将添加的資料送出,進而完成資料存儲操作
  • 從SharedPreferences中讀取資料,SharedPreferences對象中每種get方法都對應了SharedPreferences.Editor中的一種put方法。get方法接受兩個參數,第一個參數是鍵,第二個參數是預設值,即當傳入的鍵找不到對應的值時會傳回該值。
    SharedPreferences.Editor editor = getSharedPreferences("date", MODE_PRIVATE).edit();
    editor.putInt("age", 19);
    editor.apply();
    ---------------------
    SharedPreferences sharedPreferences = getSharedPreferences("date", MODE_PRIVATE).edit();
    Log.d("MainActivity", sharedPreferences.getInt("age", 0));