在除 Android 之外的每个系统中都可以轻松完成,但我有一个需要在 SHARED EXTERNAL 下载文件夹中创建 csv 文件的应用程序。关闭/重新启动手机/应用程序并且文件仍然存在。然后我需要在用新数据重新创建文件之前删除文件(某个地方的持久 URI?)。(如果存在()删除)
我看到各种指向 SAF 的文档用于此过程,但在任何地方都找不到有关如何执行这个简单的创建/删除过程的示例。如果可以在 API 28 上执行此操作并且它可以在 29+ 上运行,那就太好了。
如果没有 SAF,我已经这样做了:
fun writeCSV() {
val CSV_HEADER = "Last,First\n"
val mockData = "Tester,Joe\n"
val contentValues = ContentValues()
contentValues.put(MediaStore.Downloads.DISPLAY_NAME, "aTest.csv")
contentValues.put(MediaStore.Downloads.MIME_TYPE, "text/csv")
contentValues.put(MediaStore.Downloads.IS_PENDING, true)
val uri = MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
val fileUri = contentResolver.insert(uri, contentValues)
if (fileUri != null) {
try {
val outputStream = contentResolver.openOutputStream(fileUri)
outputStream!!.write(CSV_HEADER.toByteArray())
outputStream!!.write(mockData.toByteArray())
outputStream!!.close()
contentValues.put(MediaStore.Images.Media.IS_PENDING, false)
contentResolver.update(fileUri, contentValues, null, null)
} catch (e: IOException) {
e.printStackTrace()
}
}
}
问题是当再次调用 fun 时,我需要删除此文件并使用新数据重新创建它,因为 Android 会创建“aTest (1).csv”而不是覆盖它。