Kotlin笔记(58) — 文件读写
2021-02-22 本文已影响0人
奔跑的佩恩
前言
在Android
开发过程中,我们还涉及到文件读写的问题,Kotlin
在文件读写方面,更是有很多优势,下面就来具体讲讲吧。
今天涉及知识有:
- 文件读写权限问题
- 文件路径获取
- 文件读写在Activity中具体使用
- 效果图
下面给出文件读写打印log:
====publicPath=/storage/emulated/0/Download
====privatePath=/storage/emulated/0/Android/data/com.kotlintest/files/Download
======写入成功====
======追加成功====
======读取所有内容为: 我是中国人一切都是幻觉
这是啥意思
====每行内容: 我是中国人一切都是幻觉
====每行内容: 这是啥意思
一.文件读写权限问题
文件读写的话,涉及到很多依赖,权限及File
的问题,先是要在你项目的androidmainfast.xml
中添加读写权限,如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
然后需要添加手动权限库,这里我使用的是PermissionsDispatcher
,手动库的添加大家可以参考以下文章:
PermissionsDispatcher动态权限申请kotlin版
接着需要添加FileProvider
相关处理,大家可参考以下文章
SpUtil多样加密存储,兼容android9.0
二. 文件路径获取
获取公共空间路径及app所在私有路径代码如下:
var publicPath =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
.toString()
LogUtil.i("====publicPath=$publicPath")
//获取当前app的私有存数路径
var privatePath = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString()
LogUtil.i("====privatePath=$privatePath")
打印结果如下:
====publicPath=/storage/emulated/0/Download
====privatePath=/storage/emulated/0/Android/data/com.kotlintest/files/Download
非常可惜的是Android7.0以后以上路径就禁止访问了
连上手机,以上路径下的内容是不能看见的,如下:

三. 文件读写在Activity中具体使用
下面列出 文件操作在TempActivity
使用的代码: