Java 如何重写文档文件
我想让用户拿起文件夹,我的应用程序将在此文件夹中创建一个文件。所以我使用Intent.ACTION\u OPEN\u DOCUMENT\u树。谷歌说我需要使用DocumentFile而不是File。之前我使用了这个文件,希望得到类似于下面代码的结果Java 如何重写文档文件,java,android,uri,outputstream,documentfile,Java,Android,Uri,Outputstream,Documentfile,我想让用户拿起文件夹,我的应用程序将在此文件夹中创建一个文件。所以我使用Intent.ACTION\u OPEN\u DOCUMENT\u树。谷歌说我需要使用DocumentFile而不是File。之前我使用了这个文件,希望得到类似于下面代码的结果 FileOutputStream fs = new FileOutputStream(mFile); Writer writer = new BufferedWriter(new OutputStreamWriter(fs)); writer.app
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();
这段代码不会重写我的文件,而是创建另一个名为Note1的文件
所以我想知道是否有一种方法可以使用OutputStream重写文件,或者有另一种方法可以使用FileOutputStream,但我不知道如何使用DocumentFile
提前谢谢。是的,您正在自己创建该文件。删除该代码。该文件已存在。因此,请使用OutputStream out=getContentResolver.openOutputStreamdata.getData。您也没有太多使用DocumentFile的内容。哦,对不起,我忘了提到treeUri是一个文件夹,而不是一个文件。然后使用pickedDir.findFile查看文件是否存在。并使用该uri。仅当文件不存在时才使用createFIle,否则您将获得另一个文件,如您所见。如果文件不存在,findFile将返回null。好的,我按照你说的做了。但也许还有另一种不删除的方法..你不应该删除。您应该使用它的uri。我以前说过。是的,你自己创建那个文件。删除该代码。该文件已存在。因此,请使用OutputStream out=getContentResolver.openOutputStreamdata.getData。您也没有太多使用DocumentFile的内容。哦,对不起,我忘了提到treeUri是一个文件夹,而不是一个文件。然后使用pickedDir.findFile查看文件是否存在。并使用该uri。仅当文件不存在时才使用createFIle,否则您将获得另一个文件,如您所见。如果文件不存在,findFile将返回null。好的,我按照你说的做了。但也许还有另一种不删除的方法..你不应该删除。您应该使用它的uri。我以前说过。
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();