Android本地存儲(chǔ)方法淺析介紹_第1頁
Android本地存儲(chǔ)方法淺析介紹_第2頁
Android本地存儲(chǔ)方法淺析介紹_第3頁
Android本地存儲(chǔ)方法淺析介紹_第4頁
Android本地存儲(chǔ)方法淺析介紹_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Android本地存儲(chǔ)方法淺析介紹目錄本地存儲(chǔ)案例原理介紹設(shè)置文本輸入框存儲(chǔ)讀取數(shù)據(jù)

本地存儲(chǔ)案例

該方法僅適用于保存一些比較簡(jiǎn)單的,運(yùn)行時(shí)并不占用過多內(nèi)存的小字段

原理介紹

我們需要完成這么一個(gè)app:

在文本框輸入文字后退出app會(huì)自動(dòng)存儲(chǔ)下次打開后,檢測(cè)到存儲(chǔ)的文本文件,自動(dòng)獲取他并輸出到文本框里

首先需要清楚:

本案例文件存儲(chǔ)的位置是:data/data/你的工程包名/files/xxx

當(dāng)手機(jī)內(nèi)存不夠時(shí),data/data目錄下的文件會(huì)被自動(dòng)清理以騰出空間,所以本方法不具有持久化存儲(chǔ)的功效!

下面介紹幾個(gè)獲取不同存儲(chǔ)路徑的方法:

getCacheDir():/data/data/你的應(yīng)用的包名/cachegetFilesDir():/data/data/你的應(yīng)用的包名/filesgetExternalFilesDir():SDCard/Android/data/你的應(yīng)用的包名/files/getExternalCacheDir():SDCard/Android/data/你的應(yīng)用包名/cache/

一般的,由于目前手機(jī)都是一體機(jī)且無法再擴(kuò)展外存,所以存儲(chǔ)到SD卡的解決方式可行性較高!

設(shè)置文本輸入框

在mainactivity的布局文件隨意添加一個(gè)文本輸入框

xmlversion="1.0"encoding="utf-8"

LinearLayoutxmlns:android="/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

EditText

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/editText"

android:hint="請(qǐng)輸入內(nèi)容"/

/LinearLayout

存儲(chǔ)讀取數(shù)據(jù)

首先我們需要定義一個(gè)存儲(chǔ)文件的方法

privatefunsave(inputText:String){

try{

//打開輸出文件,如果不存在就新建一個(gè)

valoutput=openFileOutput("data",Context.MODE_PRIVATE)

//設(shè)置輸出流

valwriter=BufferedWriter(OutputStreamWriter(output))

//使用use語法,在輸出所有內(nèi)容完畢后就會(huì)自動(dòng)關(guān)閉流,不需要手動(dòng)關(guān)閉了!

writer.use{

it.write(inputText)

}catch(e:IOException){

e.printStackTrace()

既然有了存儲(chǔ),那必須還有一個(gè)讀取,依葫蘆畫瓢即可

privatefunload():String{

//存儲(chǔ)獲取到的文本

valcontent=StringBuilder()

try{

//打開文件

valinput=openFileInput("data")

//設(shè)置輸入流

valreader=BufferedReader(InputStreamReader(input))

reader.use{

//逐行輸入到content變量

reader.forEachLine{

content.append(it)

}catch(e:IOException){

e.printStackTrace()

//返回得到的文字文本數(shù)據(jù)

returncontent.toString()

理解完以上兩個(gè)主要代碼后,我們組合到MainActivity.kt文件內(nèi),最終得到的代碼如下:

packagecom.zhiyiyi.listviewdemo

importandroid.content.Context

importandroidx.appcompat.app.AppCompatActivity

importandroid.os.Bundle

importandroid.widget.Toast

importkotlinx.android.synthetic.main.activity_main.*

importjava.io.*

classMainActivity:AppCompatActivity(){

overridefunonCreate(savedInstanceState:Bundle){

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

//activity打開前讀取存儲(chǔ)的文件,拿出內(nèi)容

valinputText=load()

if(inputText.isNotEmpty()){

editText.setText(inputText)

editText.setSelection(inputText.length)

Toast.makeText(this,"Restoringsucceeded",Toast.LENGTH_SHORT).show()

//activity銷毀前執(zhí)行存儲(chǔ)方法

overridefunonDestroy(){

super.onDestroy()

valinputText=editText.text.toString()

save(inputText)

//存儲(chǔ)

privatefunsave(inputText:String){

try{

valoutput=openFileOutput("data",Context.MODE_PRIVATE)

valwriter=BufferedWriter(OutputStreamWriter(output))

writer.use{

it.write(inputText)

}catch(e:IOException){

e.printStackTrace()

//讀取

privatefunload():String{

valcontent=StringBuilder()

try{

valinput=openFileInput("data")

valreader=BufferedReader(InputStreamReader(input))

reader

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論