0

在除 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”而不是覆盖它。

4

0 回答 0