亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android 文件存儲(chǔ)與SharedPreferences存儲(chǔ)方式詳解用法

 更新時(shí)間:2021年10月26日 10:20:30   作者:低吟不作語(yǔ)  
SharedPreferences是安卓平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類,用來(lái)保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時(shí),將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時(shí),再?gòu)腟haredPreferences中將值取出

持久化技術(shù)簡(jiǎn)介

數(shù)據(jù)持久化就是指將那些內(nèi)存中的瞬時(shí)數(shù)據(jù)保存到存儲(chǔ)設(shè)備中,保證即使在手機(jī)或計(jì)算機(jī)關(guān)機(jī)的情況下,這些數(shù)據(jù)也不會(huì)丟失。保存在內(nèi)存中的數(shù)據(jù)是處于瞬時(shí)狀態(tài)的,而保存在存儲(chǔ)設(shè)備的數(shù)據(jù)是處于持久狀態(tài)的。持久化技術(shù)提供了一種機(jī)制,可以讓數(shù)據(jù)在瞬時(shí)狀態(tài)和持久狀態(tài)之間進(jìn)行切換

文件存儲(chǔ)

1. 將數(shù)據(jù)存儲(chǔ)到文件中

文件存儲(chǔ)是 Android 中最基本的數(shù)據(jù)存儲(chǔ)方式,它不對(duì)存儲(chǔ)的內(nèi)容進(jìn)行格式化處理,所有數(shù)據(jù)都是原封不動(dòng)的保存到文件當(dāng)中,適合存儲(chǔ)一些簡(jiǎn)單的文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)

Context 類提供了一個(gè) openFileOutput() 方法,可以將數(shù)據(jù)存儲(chǔ)到指定的文件中

fun save(inputText: String) {
    try {
        val output = openFileOutput("data", Context.MODE_PRIVATE)
        val writer = BufferedWriter(OutputStreamWriter(output))
        writer.use {
            it.write(inputText)
        }
    } catch (e: IOException) {
        e.printStackTrace()
    }
}

openFileOutput() 方法接收兩個(gè)參數(shù):

  • 第一個(gè)參數(shù)是文件名,在文件創(chuàng)建的時(shí)候使用。指定的文件名可以不包含路徑,因?yàn)樗械奈募寄J(rèn)存儲(chǔ)到 /data/data/<package name>/files/ 目錄下
  • 第二個(gè)參數(shù)是文件的操作模式,主要有 MODE_PRIVATEMODE_APPEND 兩種模式可選,默認(rèn)是 MODE_PRIVATE,表示當(dāng)指定相同文件名時(shí),所寫(xiě)入的內(nèi)容將會(huì)覆蓋原文件的內(nèi)容。而 MODE_APPEND 則表示如果文件存在,就往文件追加內(nèi)容

2. 從文件中讀取數(shù)據(jù)

類似于將數(shù)據(jù)存儲(chǔ)到文件中,Context 類提供了一個(gè) openFileInput() 方法,用于從文件中讀取數(shù)據(jù)

fun load(): String {
    val content = StringBuilder()
    try {
        val input = openFileInput("data")
        val reader = BufferedReader(InputStreamReader(input))
        reader.use {
            reader.forEachLine {
                content.append(it)
            }
        }
    } catch (e: IOException) {
        e.printStackTrace()
    }
    return content.toString()
}

openFileInput() 方法只接收一個(gè)參數(shù),即要讀取的文件名,然后系統(tǒng)自動(dòng)到 /data/data/<package name>/files 目錄下加載這個(gè)文件

SharedPreferences 存儲(chǔ)

不同于文件存儲(chǔ),SharedPreferences 是使用鍵值對(duì)的方式來(lái)存儲(chǔ)數(shù)據(jù)的。也就是說(shuō),當(dāng)保存一條數(shù)據(jù)時(shí),需要給這條數(shù)據(jù)提供一個(gè)對(duì)應(yīng)的鍵。SharedPreferences 支持多種不同的數(shù)據(jù)類型存儲(chǔ)。

1. 將數(shù)據(jù)存儲(chǔ)到 SharedPreferences 中

要想使用 SharedPreferences,首先要獲得 SharedPreferences 對(duì)象。Android 中主要提供以下兩種方法用于得到 SharedPreferences 對(duì)象:

  • Context 類中的 getSharedPreferences() 方法,此方法接收兩個(gè)參數(shù):第一個(gè)參數(shù)指定 SharedPreferences 文件的名稱,存放在 /data/data/<package name>/shared_prefs/ 目錄下;第二個(gè)參數(shù)指定操作模式,目前只有 MODE_PRIVATE 可選,表示只有當(dāng)前應(yīng)用程序才可以對(duì)這個(gè) SharedPreferences 文件進(jìn)行讀寫(xiě)
  • Activity 類中的 getPreferences() 方法,它只接受一個(gè)操作模式參數(shù),因?yàn)槭褂眠@個(gè)方法會(huì)自動(dòng)將當(dāng)前 Activity 的類名作為 SharedPreferences 的文件名

得到 SharedPreferences 對(duì)象之后,就可以開(kāi)始向 SharedPreferences 存儲(chǔ)數(shù)據(jù)了

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    button.setOnClickListener {
        val editor = getSharedPreferences("data", Context.MODE_PRIVATE).edit()
        editor.putString("name", "Tom")
        editor.putInt("age", 28)
        editor.putBoolean("married", false)
        editor.apply()
    }
}

2. 從 SharedPreferences 中讀取數(shù)據(jù)

SharedPreferences 對(duì)象提供了一系列 get 方法,用于讀取存儲(chǔ)的對(duì)應(yīng)類型的數(shù)據(jù)。這些 get 方法都接收兩個(gè)參數(shù):第一個(gè)參數(shù)是鍵,第二個(gè)參數(shù)是默認(rèn)值,表示傳入的鍵找不到對(duì)應(yīng)的值時(shí)以什么樣的默認(rèn)值來(lái)返回

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    button.setOnClickListener {
        val prefs = getSharedPreferences("data", Context.MODE_PRIVATE)
        val name = prefs.getString("name", "")
        val age = prefs.getInt("age", 0)
        val married = prefs.getBoolean("married", false)
    }
}

到此這篇關(guān)于Android 文件存儲(chǔ)與SharedPreferences存儲(chǔ)方式詳解用法的文章就介紹到這了,更多相關(guān)Android 存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論