Kotlin 开发Android app(十九):文件读写和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: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
他是一种key
,value
形式的字符串。
数据放在目录 / 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内容存储相关推荐
- Kotlin 开发Android app(十二):Android布局FrameLayout和ViewPager2控件实现滚动广告栏
在上一节中我们简单的介绍了RecyclerView 的使用,他是整个开发的重点控件,这一节我们来看看FrameLayout 布局结合ViewPager2,开发一个广告控件. 新模块banner 先创建 ...
- Kotlin 开发Android app(十八):线程Thread和UI更新
多线程的好处是不言而喻的,它能帮我们刚更多的事情,同时干不同的事情在程序设计中是经常出现的,这种时候我们使用的是线程. 在Kotlin 中,使用的还是原先java 的那一套,用的还是Thread ,可 ...
- Kotlin 开发Android app(一):Kotlin 建立Android工程
产品会不断的迭代更新,其实编程语言也是一样的,开发Android 的新语言Kotlin 是简便了很多,我们不需要写太多无用的带来,来实现同样的功能,这来自于Kotlin 语言的特性,Kotlin 有什 ...
- 使用 jQuery Mobile 与 HTML5 开发 Web App (十九) —— HTML5 对 Web App 的影响
在本系列文章的开头,Kayo 曾经介绍过 Web App 的优缺点,并且说明了 HTML5 在其中起的作用,当然,Web Apps 的发展需要 HTML5 , CSS 与 JavaScript 以及后 ...
- Kotlin 开发Android app(四):Kotlin 四大容器Set,Array,List,Map
在做Kotlin 的开发中,数据结构的使用使我们操作程序的基础,在Kotlin 中有四种重要的容器,分别为Array,Set,List和Map,如果之前有接触过其他的语言编程的话,那么对这四种容器应该 ...
- UWP开发入门(十九)——10分钟学会在VS2015中使用Git
原文:UWP开发入门(十九)--10分钟学会在VS2015中使用Git 写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支 ...
- 用Kotlin开发android平台语音识别语义理解应用
用Kotlin开发android平台语音识别,语义理解应用(olamisdk) 转载请注明CSDN博文地址:http://blog.csdn.net/ls0609/article/details/75 ...
- 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)
本文使用Kotlin开发Android平台的一个语音识别方面的应用,用的是欧拉密开放平台olamisdk. 1.Kotlin简介 Kotlin是由JetBrains创建的基于JVM的编程语言,Inte ...
- 使用Kotlin开发Android应用 - 环境搭建 (1)
一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...
最新文章
- 每周一荐: Google Dictionary,The Polar Express
- bzoj3211,bzoj3038
- db2关闭下一句sql的日志_DB2_数据库日志管理
- 如何在SAP ABAP development studio里进行代码coverage分析
- JAVA实现汉字转换为拼音 pinyin4j/JPinyin
- 测试动态视力软件叫什么影响吗,动态视力
- 深入理解 gRPC 协议--理解protobuf/.proto/http2
- Core Data的使用(二)备
- 编程基础(三)——体系结构之三
- 关于 MRC 开发中的一些细节
- sony android mp3播放器,劲能小钢炮!Sony ZX505 播放器动耳听:云音乐也HiFi
- 基于SSM的酒店客房管理系统的设计(包含数据库、完美运行、可远程调试)
- 混合移动应用中地图导航功能开发与应用
- 用友财务系统对接第三方业务系统达到财务业务一体化管理
- 漫步线性代数十四——正交和子空间
- Python错误集锦:除法运算时提示ZeroDivisionError: division by zero
- Java复习:确定给定日期是一年的第几天
- stm32之备份寄存器(BKP)应用(侵入检测中断)
- Revit中添加水平仰视平面图及水平剖面
- android隐藏系统ui_如何在非库存设备上获取Android的系统UI调谐器