首页 > 解决方案 > 如何重写文档文件

问题描述

我想让用户拿起文件夹,我的应用程序将在这个文件夹中创建一个文件。所以我用Intent.ACTION_OPEN_DOCUMENT_TREE. 谷歌说我需要使用 DocumentFile 而不是 File。以前我使用 File 并希望得到类似于下面代码结果的结果

FileOutputStream fs = new FileOutputStream(mFile);
Writer writer = new BufferedWriter(new OutputStreamWriter(fs));
writer.append(mContent);

但是 DocumentFile 不是文件,我不能使用 FileOutputStream。所以我使用 OutputStream 编写了这段代码

 Uri treeUri = data.getData();
 DocumentFile pickedDir = DocumentFile.fromTreeUri(MainActivity.this, treeUri);
 DocumentFile mFile = pickedDir.createFile("text/plain", "Note");
 OutputStream out = getContentResolver().openOutputStream(mFile.getUri());                                            
 out.write(infos.get(i).getContent().getBytes());
 out.flush();
 out.close();

此代码不会重写我的文件,而是创建另一个名为 Note(1) 的文件所以我想知道是否有一种方法可以使用 OutputStream 或另一种方法使用 FileOutputStream 来重写文件,但我不知道如何使用它与 DocumentFile。

先感谢您。

标签: javaandroidurioutputstreamdocumentfile

解决方案


Uri treeUri = data.getData();
DocumentFile pickedDir = DocumentFile.fromTreeUri(MainActivity.this, treeUri);
DocumentFile documentFile = pickedDir.findFile("Note");
if (documentFile == null) 
  documentFile = pickedDir.createFile("text/plain", "Note");

OutputStream out = getContentResolver().openOutputStream(documentFile.getUri());                                            
out.write(infos.get(i).getContent().getBytes());
out.flush();
out.close();

推荐阅读