Kotlin文件讀寫與SharedPreferences存儲(chǔ)功能實(shí)現(xiàn)方法
在項(xiàng)目中,有些重要的數(shù)據(jù)需要保存在手機(jī)中,在手機(jī)中為了數(shù)據(jù)的安全需要把存儲(chǔ)分為內(nèi)部存儲(chǔ)和外部sd卡存儲(chǔ)。
內(nèi)部存儲(chǔ)
存儲(chǔ)在內(nèi)部的數(shù)據(jù)是比較安全的,別的app是無法訪問到你的內(nèi)部數(shù)據(jù),只有自己的app才有讀寫的權(quán)限。
AndroidManifest.xml
中添加權(quán)限:
<!-- SD卡讀寫權(quán)限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
讀寫文件跟java
的代碼沒有太多的區(qū)別:
val file:String = "1.txt" val data:String = "11111" val fileOutputStream:FileOutputStream try { var datab = data.toByteArray() fileOutputStream = openFileOutput(file, Context.MODE_PRIVATE) fileOutputStream.write(datab) fileOutputStream.close() }catch (e: Exception){ println(e.toString()) }
也是一樣的使用FileOutputStream
寫入數(shù)據(jù),讀取數(shù)據(jù) FileInputStream
:
val fileInputStream:FileInputStream try { fileInputStream = openFileInput(file) var datab = fileInputStream.readBytes() println(datab.toString(Charset.defaultCharset())) fileInputStream.close() }catch (e: Exception){ e.printStackTrace() }
這就是內(nèi)部文件的操作,如果還需要規(guī)范的數(shù)據(jù),可以使用SharedPreferences
他是一種key
,value
形式的字符串。
數(shù)據(jù)放在目錄 / data/data/your_app_package_name/shared_prefs /
下,可以被處在同一個(gè)應(yīng)用中的所有 Activity 訪問。
讀寫方式如下:
聲明主體:sps = getSharedPreferences("shareTest",Context.MODE_PRIVATE)
寫入數(shù)值
fun writeShareString(key:String,value:String){ var editor:SharedPreferences.Editor = sps!!.edit() editor.putString(key,value) editor.commit() }
讀取數(shù)值
fun readString(key:String):String?{ if (!key.isNullOrBlank()){ return sps!!.getString(key,null) } return null }
外部數(shù)據(jù)讀取
這里的外部數(shù)據(jù)指的是通常我們說的sd卡數(shù)據(jù)。讀取的時(shí)候需要用到一些權(quán)限,可以在代碼中進(jìn)行申請(qǐng),
var REQUEST_CODE_PERMISSION_STORAGE = 100; var permissions = arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) permissions.forEach { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission(it) != PackageManager.PERMISSION_GRANTED) { requestPermissions(arrayOf(it), REQUEST_CODE_PERMISSION_STORAGE) } } }
如果還出現(xiàn) open failed: EACCES (Permission denied)
的問題,那可能是讀到別人的文件,你需要換個(gè)文件名試一試。
val publicPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString() var file3:File = File(publicPath,"12.txt") file3.writeText("1111") var file4:File =File(publicPath,"12.txt") var ss = file4.readText()
使用getExternalStoragePublicDirectory
獲得的sd中的DOCUMENTS
目錄,新建12.txt
,并寫入相應(yīng)的數(shù)據(jù),相應(yīng)的也可以進(jìn)行讀數(shù)據(jù)。
小結(jié)
app中產(chǎn)生的數(shù)據(jù)是重要的,我們不希望自己的數(shù)據(jù)隨隨便便就別人拿走,也不能隨意的訪問別人的文件,至于文件的操作其實(shí)大部分的編程都是差不多的。
到此這篇關(guān)于Kotlin文件讀寫與SharedPreferences存儲(chǔ)功能實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Kotlin SharedPreferences內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android頁面中可編輯與不可編輯切換的實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于在Android頁面中可編輯與不可編輯切換的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07Android拍照保存在系統(tǒng)相冊(cè)不顯示的問題解決方法
我們保存相冊(cè)到Android手機(jī)的時(shí)候,然后去打開系統(tǒng)圖庫找不到我們想要的那張圖片,那是因?yàn)槲覀儾迦氲膱D片還沒有更新的緣故,下面與大家分享下此問題的解決方法2013-06-06Android中實(shí)現(xiàn)基本的短信攔截功能的代碼示例
這篇文章主要介紹了Android中實(shí)現(xiàn)基本短信攔截功能的代碼示例,這里之突出核心部分針對(duì)一個(gè)號(hào)碼,當(dāng)然程序擴(kuò)充后可以制定更多攔截規(guī)則,需要的朋友可以參考下2016-04-04Android實(shí)現(xiàn)倒計(jì)時(shí)的按鈕的示例代碼
本篇文章主要介紹了Android實(shí)現(xiàn)倒計(jì)時(shí)的按鈕的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01A07_TimePicker & DatePicker & AnalogClock & Digi
本文將帶領(lǐng)大家一起學(xué)習(xí)時(shí)間日期和時(shí)鐘的設(shè)置。A07_TimePicker & DatePicker & AnalogClock & DigitalClock 的設(shè)置,感興趣的朋友可以參考下哈2013-06-06android 監(jiān)聽SD卡文件變化的實(shí)現(xiàn)代碼
這篇文章主要介紹了android 監(jiān)聽SD卡文件變化的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-11-11