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

在项目中,有些重要的数据需要保存在手机中,在手机中为了数据的安全需要把存储分为内部存储和外部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中产生的数据是重要的,我们不希望自己的数据随随便便就别人拿走,也不能随意的访问别人的文件,至于文件的操作其实大部分的编程都是差不多的。

作者:go2coding原文地址:https://blog.csdn.net/weixin_40425640/article/details/128038825

%s 个评论

要回复文章请先登录注册