在项目中,有些重要的数据需要保存在手机中,在手机中为了数据的安全需要把存储分为内部存储和外部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:FileOutputStreamtry {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:FileInputStreamtry {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 开发Android app(十九):文件读写和SharedPreferences内容存储相关推荐

  1. Kotlin 开发Android app(十二):Android布局FrameLayout和ViewPager2控件实现滚动广告栏

    在上一节中我们简单的介绍了RecyclerView 的使用,他是整个开发的重点控件,这一节我们来看看FrameLayout 布局结合ViewPager2,开发一个广告控件. 新模块banner 先创建 ...

  2. Kotlin 开发Android app(十八):线程Thread和UI更新

    多线程的好处是不言而喻的,它能帮我们刚更多的事情,同时干不同的事情在程序设计中是经常出现的,这种时候我们使用的是线程. 在Kotlin 中,使用的还是原先java 的那一套,用的还是Thread ,可 ...

  3. Kotlin 开发Android app(一):Kotlin 建立Android工程

    产品会不断的迭代更新,其实编程语言也是一样的,开发Android 的新语言Kotlin 是简便了很多,我们不需要写太多无用的带来,来实现同样的功能,这来自于Kotlin 语言的特性,Kotlin 有什 ...

  4. 使用 jQuery Mobile 与 HTML5 开发 Web App (十九) —— HTML5 对 Web App 的影响

    在本系列文章的开头,Kayo 曾经介绍过 Web App 的优缺点,并且说明了 HTML5 在其中起的作用,当然,Web Apps 的发展需要 HTML5 , CSS 与 JavaScript 以及后 ...

  5. Kotlin 开发Android app(四):Kotlin 四大容器Set,Array,List,Map

    在做Kotlin 的开发中,数据结构的使用使我们操作程序的基础,在Kotlin 中有四种重要的容器,分别为Array,Set,List和Map,如果之前有接触过其他的语言编程的话,那么对这四种容器应该 ...

  6. UWP开发入门(十九)——10分钟学会在VS2015中使用Git

    原文:UWP开发入门(十九)--10分钟学会在VS2015中使用Git 写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支 ...

  7. 用Kotlin开发android平台语音识别语义理解应用

    用Kotlin开发android平台语音识别,语义理解应用(olamisdk) 转载请注明CSDN博文地址:http://blog.csdn.net/ls0609/article/details/75 ...

  8. 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)

    本文使用Kotlin开发Android平台的一个语音识别方面的应用,用的是欧拉密开放平台olamisdk. 1.Kotlin简介 Kotlin是由JetBrains创建的基于JVM的编程语言,Inte ...

  9. 使用Kotlin开发Android应用 - 环境搭建 (1)

    一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...

最新文章

  1. 每周一荐: Google Dictionary,The Polar Express
  2. bzoj3211,bzoj3038
  3. db2关闭下一句sql的日志_DB2_数据库日志管理
  4. 如何在SAP ABAP development studio里进行代码coverage分析
  5. JAVA实现汉字转换为拼音 pinyin4j/JPinyin
  6. 测试动态视力软件叫什么影响吗,动态视力
  7. 深入理解 gRPC 协议--理解protobuf/.proto/http2
  8. Core Data的使用(二)备
  9. 编程基础(三)——体系结构之三
  10. 关于 MRC 开发中的一些细节
  11. sony android mp3播放器,劲能小钢炮!Sony ZX505 播放器动耳听:云音乐也HiFi
  12. 基于SSM的酒店客房管理系统的设计(包含数据库、完美运行、可远程调试)
  13. 混合移动应用中地图导航功能开发与应用
  14. 用友财务系统对接第三方业务系统达到财务业务一体化管理
  15. 漫步线性代数十四——正交和子空间
  16. Python错误集锦:除法运算时提示ZeroDivisionError: division by zero
  17. Java复习:确定给定日期是一年的第几天
  18. stm32之备份寄存器(BKP)应用(侵入检测中断)
  19. Revit中添加水平仰视平面图及水平剖面
  20. android隐藏系统ui_如何在非库存设备上获取Android的系统UI调谐器

热门文章

  1. 微信中无法直接下载秒借类金融贷款APP的解决方案
  2. 下班后可以做点什么副业赚钱呢?
  3. python通过jira的接口操作jira
  4. Kettle 9.1 下载
  5. 锂电池参数的一些概念结合一块具体电池参数表的理解
  6. 塔夫斯大学计算机专业,塔夫茨大学优势专业
  7. 树莓派开机连接桌面的两种方式
  8. Java导出excel表格,数字数据带E
  9. 2011年10月14日22:40,“你在哪(where are you)”诞生
  10. 学习笔记整理——Find 命令,附带练习题及答案。