Kotlin文件讀寫與SharedPreferences存儲功能實現(xiàn)方法
在項目中,有些重要的數(shù)據(jù)需要保存在手機中,在手機中為了數(shù)據(jù)的安全需要把存儲分為內(nèi)部存儲和外部sd卡存儲。
內(nèi)部存儲
存儲在內(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 / 下,可以被處在同一個應用中的所有 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ù)。讀取的時候需要用到一些權(quán)限,可以在代碼中進行申請,
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) 的問題,那可能是讀到別人的文件,你需要換個文件名試一試。
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,并寫入相應的數(shù)據(jù),相應的也可以進行讀數(shù)據(jù)。
小結(jié)
app中產(chǎn)生的數(shù)據(jù)是重要的,我們不希望自己的數(shù)據(jù)隨隨便便就別人拿走,也不能隨意的訪問別人的文件,至于文件的操作其實大部分的編程都是差不多的。
到此這篇關(guān)于Kotlin文件讀寫與SharedPreferences存儲功能實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Kotlin SharedPreferences內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android拍照保存在系統(tǒng)相冊不顯示的問題解決方法
我們保存相冊到Android手機的時候,然后去打開系統(tǒng)圖庫找不到我們想要的那張圖片,那是因為我們插入的圖片還沒有更新的緣故,下面與大家分享下此問題的解決方法2013-06-06
Android中實現(xiàn)基本的短信攔截功能的代碼示例
這篇文章主要介紹了Android中實現(xiàn)基本短信攔截功能的代碼示例,這里之突出核心部分針對一個號碼,當然程序擴充后可以制定更多攔截規(guī)則,需要的朋友可以參考下2016-04-04
A07_TimePicker & DatePicker & AnalogClock & Digi
本文將帶領大家一起學習時間日期和時鐘的設置。A07_TimePicker & DatePicker & AnalogClock & DigitalClock 的設置,感興趣的朋友可以參考下哈2013-06-06
android 監(jiān)聽SD卡文件變化的實現(xiàn)代碼
這篇文章主要介紹了android 監(jiān)聽SD卡文件變化的實現(xiàn)代碼,需要的朋友可以參考下2017-11-11

