文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Kotlin文件读写与SharedPreferences存储功能实现方法

2022-12-08 20:56

关注

在项目中,有些重要的数据需要保存在手机中,在手机中为了数据的安全需要把存储分为内部存储和外部sd卡存储。

内部存储

存储在内部的数据是比较安全的,别的app是无法访问到你的内部数据,只有自己的app才有读写的权限。

AndroidManifest.xml 中添加权限:

    <!-- SD卡读写权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

读写文件跟java的代码没有太多的区别:

            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 写入数据,读取数据 FileInputStream:

            val fileInputStream:FileInputStream
            try {
                fileInputStream = openFileInput(file)
                var datab = fileInputStream.readBytes()
                println(datab.toString(Charset.defaultCharset()))
                fileInputStream.close()
            }catch (e: Exception){
                e.printStackTrace()
            }

这就是内部文件的操作,如果还需要规范的数据,可以使用SharedPreferences 他是一种keyvalue形式的字符串。

数据放在目录 / data/data/your_app_package_name/shared_prefs / 下,可以被处在同一个应用中的所有 Activity 访问。

读写方式如下:

声明主体:sps = getSharedPreferences("shareTest",Context.MODE_PRIVATE)

写入数值

    fun writeShareString(key:String,value:String){
        var editor:SharedPreferences.Editor = sps!!.edit()
        editor.putString(key,value)
        editor.commit()
    }

读取数值

    fun readString(key:String):String?{
        if (!key.isNullOrBlank()){
            return sps!!.getString(key,null)
        }
        return null
    }

外部数据读取

这里的外部数据指的是通常我们说的sd卡数据。读取的时候需要用到一些权限,可以在代码中进行申请,

        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)
                }
            }
        }

如果还出现 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,并写入相应的数据,相应的也可以进行读数据。

小结

app中产生的数据是重要的,我们不希望自己的数据随随便便就别人拿走,也不能随意的访问别人的文件,至于文件的操作其实大部分的编程都是差不多的。

到此这篇关于Kotlin文件读写与SharedPreferences存储功能实现方法的文章就介绍到这了,更多相关Kotlin SharedPreferences内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯