如何在 Android 10 以上使用 MediaStore 编辑文件而不是创建新文件?
How to edit a file instead of creating a new one using MediaStore above Android 10?
我尝试使用带有上述代码的 MediaStore 在 Documents 外部目录中创建一个文件:
val resolver = applicationContext.contentResolver
val contentValues = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, "doc.txt")
put(MediaStore.MediaColumns.MIME_TYPE, "text/plain")
put(MediaStore.MediaColumns.RELATIVE_PATH, "Documents")
}
val uri = resolver.insert(MediaStore.Files.getContentUri("external"), contentValues)
uri?.let {
resolver.openOutputStream(it).use {
// Write file
it?.write("line1".toByteArray(Charset.defaultCharset()))
it?.write("line2".toByteArray(Charset.defaultCharset()))
it?.close()
}
}
我第一次执行此代码时,文件 'doc.txt' 按预期创建。
但是如果我再次执行相同的代码,它会创建一个新文件 'doc (1).txt' 而不是编辑我已经创建的文件。
当原始 'doc.txt' 文件已经存在时,如何修改它?
根据我的理解,我应该可以写这个文件,因为它是我创建的。
But if I execute the same code again, it create me a new file 'doc (1).txt' instead of editing the file I already created.
您的代码做了两件事:
- 在
MediaStore
中插入一个新条目
- 为
insert()
返回的 Uri
打开一个 OutputStream
并将内容写入该流
如果您不想添加新条目,请不要插入。
How can I modify the original 'doc.txt' file when it already exist ?
为您最初获得的 Uri
打开一个 OutputStream
,然后将内容写入该流。
我尝试使用带有上述代码的 MediaStore 在 Documents 外部目录中创建一个文件:
val resolver = applicationContext.contentResolver
val contentValues = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, "doc.txt")
put(MediaStore.MediaColumns.MIME_TYPE, "text/plain")
put(MediaStore.MediaColumns.RELATIVE_PATH, "Documents")
}
val uri = resolver.insert(MediaStore.Files.getContentUri("external"), contentValues)
uri?.let {
resolver.openOutputStream(it).use {
// Write file
it?.write("line1".toByteArray(Charset.defaultCharset()))
it?.write("line2".toByteArray(Charset.defaultCharset()))
it?.close()
}
}
我第一次执行此代码时,文件 'doc.txt' 按预期创建。
但是如果我再次执行相同的代码,它会创建一个新文件 'doc (1).txt' 而不是编辑我已经创建的文件。
当原始 'doc.txt' 文件已经存在时,如何修改它?
根据我的理解,我应该可以写这个文件,因为它是我创建的。
But if I execute the same code again, it create me a new file 'doc (1).txt' instead of editing the file I already created.
您的代码做了两件事:
- 在
MediaStore
中插入一个新条目
- 为
insert()
返回的Uri
打开一个OutputStream
并将内容写入该流
如果您不想添加新条目,请不要插入。
How can I modify the original 'doc.txt' file when it already exist ?
为您最初获得的 Uri
打开一个 OutputStream
,然后将内容写入该流。