Android 使用BufferedWriter写文件时,Android 设备突然断电,保存的文件大小为 0 B,再次启动设备,在桌面点击该程序,无法进入,会闪退。大家遇到过这个问题过吗?希望解答,谢谢。
fun save(file: File, dataLists: List<DataItem>) {
Log.d("TAG", "save: ${file.toString()}")
val bufferedWriter = BufferedWriter(FileWriter(file))
val tempSb = StringBuilder()
tempSb.append("开始时间,结束时间\r\n")
for (i in dataLists.indices) {
tempSb.append(dataLists[i].toString() + "\r\n")
}
bufferedWriter.write(tempSb.toString())
bufferedWriter.flush()
bufferedWriter.close()
}
建议使用 mmkv 进行内容存储保存。
通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash 导致数据丢失。
写文件的时候,先写入一个tmp文件,写好了之后重命名覆盖原文件,不要先把原始文件删除,这样即使失败了大不了相当于没有更改,不会全没了
此外,启动app读文件的时候要做判断,没有文件或者有文件没内容,就用默认方式初始化变量,不要没内容还硬读,不崩溃了
mmkv确实不错可以试试