您好,登錄后才能下訂單哦!
這篇文章主要介紹“Android文件存儲(chǔ)與SharedPreferences存儲(chǔ)方式是什么”,在日常操作中,相信很多人在Android文件存儲(chǔ)與SharedPreferences存儲(chǔ)方式是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Android文件存儲(chǔ)與SharedPreferences存儲(chǔ)方式是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
持久化技術(shù)簡(jiǎn)介
文件存儲(chǔ)
1. 將數(shù)據(jù)存儲(chǔ)到文件中
2. 從文件中讀取數(shù)據(jù)
SharedPreferences 存儲(chǔ)
1. 將數(shù)據(jù)存儲(chǔ)到 SharedPreferences 中
2. 從 SharedPreferences 中讀取數(shù)據(jù)
數(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ǔ)是 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_PRIVATE
和 MODE_APPEND
兩種模式可選,默認(rèn)是 MODE_PRIVATE
,表示當(dāng)指定相同文件名時(shí),所寫入的內(nèi)容將會(huì)覆蓋原文件的內(nèi)容。而 MODE_APPEND
則表示如果文件存在,就往文件追加內(nèi)容
類似于將數(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è)文件
不同于文件存儲(chǔ),SharedPreferences 是使用鍵值對(duì)的方式來(lái)存儲(chǔ)數(shù)據(jù)的。也就是說(shuō),當(dāng)保存一條數(shù)據(jù)時(shí),需要給這條數(shù)據(jù)提供一個(gè)對(duì)應(yīng)的鍵。SharedPreferences 支持多種不同的數(shù)據(jù)類型存儲(chǔ)。
要想使用 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)行讀寫
Activity
類中的 getPreferences()
方法,它只接受一個(gè)操作模式參數(shù),因?yàn)槭褂眠@個(gè)方法會(huì)自動(dòng)將當(dāng)前 Activity 的類名作為 SharedPreferences 的文件名
得到 SharedPreferences 對(duì)象之后,就可以開始向 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() } }
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ǔ)方式是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。