欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin文件讀寫與SharedPreferences存儲(chǔ)功能實(shí)現(xiàn)方法

 更新時(shí)間:2022年12月07日 09:53:35   作者:go2coding  
SharedPreferences是安卓平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類,用來保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時(shí),將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時(shí),再從SharedPreferences中將值取出

在項(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 他是一種keyvalue形式的字符串。

數(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)文章

最新評(píng)論