Android写入应用私有目录时遭遇EROFS只读文件系统错误
问题原因与修复方案
错误根源
你代码里的核心问题出在FileWriter(channelDataFile.name)这一行:
当你仅传递文件名给FileWriter时,它默认会尝试在设备根目录(属于只读分区)创建文件,而非你指定的应用私有filesDir目录,这直接导致了EROFS (Read-only file system)异常。
修正后的代码
直接传入包含完整路径的File对象即可解决问题:
val now = LocalDateTime.now() channelDataFile = File(applicationContext.filesDir, "channel_${now.year}-${now.month}-${now.dayOfMonth}-${now.hour}-${now.minute}-${now.second}.csv") // 传入完整路径的File对象,而非仅文件名 val fileWriter = FileWriter(channelDataFile) val printWriter = PrintWriter(fileWriter)
或者也可以传入文件的绝对路径:
val fileWriter = FileWriter(channelDataFile.absolutePath)
补充说明
应用私有filesDir(即/data/user/0/com.redacted.redacted/files)的读写确实不需要申请额外权限,只要确保操作的是该目录下的文件,修正后即可正常完成写入。
内容的提问来源于stack exchange,提问作者Aashishkebab
相关产品推荐
相关产品推荐

