实现方案

  1. Manifest文件添加权限声明
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  1. 添加申请权限开源包依赖
implementation 'com.afollestad:assent:2.3.1'

  1. 申请权限及读写文件代码
class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
writeFileBtn.setOnClickListener {
checkPermissionAndWriteFile()
}
readFileBtn.setOnClickListener {
checkPermissionAndReadFile()
}
}

/**
* 检查权限并写文件
*/
private fun checkPermissionAndWriteFile() {
runWithPermissions(Permission.WRITE_EXTERNAL_STORAGE) {
writeFile("test data")
}
}

/**
* 写文件
*/
private fun writeFile(data: String) {
val testFile = getTestFile()
getTestFile().writeText(data)
Toast.makeText(this, "filePath:${testFile.absolutePath}", Toast.LENGTH_SHORT).show()
}

/**
* 检查权限并写文件
*/
private fun checkPermissionAndReadFile() {
runWithPermissions(Permission.WRITE_EXTERNAL_STORAGE) {
readFile()
}
}

/**
* 读文件
*/
private fun readFile() {
val testFile = getTestFile()
val content = testFile.readText()
Toast.makeText(this, content, Toast.LENGTH_SHORT).show()
}

private fun getTestFile(): File {
val dir = File(getExternalFilesDir(null)?.absolutePath, "tmp")
dir.mkdirs()

return File(dir.absolutePath + "/test.txt")
}
}