我刚接触Kotlin/Android开发。我试图将文本写入文本文件中,但我无法弄清楚如何做到这一点。我尝试过以下方法:
File("filename.txt").printWriter().use { out ->
out.println("${it.key}, ${it.value}")
}
我得到了以下结果。(顺便提一句,“filename.txt”位于我的项目中的assets文件夹中)
Caused by: java.io.FileNotFoundException: prices.txt (Read-only file system)
所以我发现我需要写入一个有权限的位置。据我所知,这是内部私有存储。我通过使用以下命令找到了我有写入权限的目录:
filesDir
那给了我:
/data/user/com.example.myname.appname/files
从目前我所看到的情况,我只需要在这个目录中创建一个文件,在该文件中写入内容,需要时从中读取即可。问题是我不知道如何做到这一点。但我尝试过这样做:
// create file?
val file = File(applicationContext.filesDir, "test.txt")
//try to write to said file?
applicationContext.openFileOutput(file.toString(), Context.MODE_PRIVATE).use
{
it.write("test".toByteArray())
}
但是我遇到了这个错误:
Caused by: java.lang.IllegalArgumentException: File
/data/user/0/com.example.pawlaczykm.dollarsense/files/test.txt contains
a path separator
我现在处于最大的误解和困惑点。我的目标是将内容写入文本文件,然后稍后在整个应用程序中访问该文件。
更新
尝试了以下操作,但没有看到“comment”回传:
File(applicationContext.filesDir, "test.txt").printWriter().use{ out ->
out.println("content")
}
File(applicationContext.filesDir, "test.txt").bufferedReader().use{ out ->
var text5 = out.toString()
Toast.makeText(this, text5.toString(), Toast.LENGTH_LONG).show()
}
val text=File(applicationContext.filesDir, "test.txt").bufferedReader().use { it.readText(); }
- CommonsWare