Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何重写文档文件_Java_Android_Uri_Outputstream_Documentfile - Fatal编程技术网

Java 如何重写文档文件

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

我想让用户拿起文件夹,我的应用程序将在此文件夹中创建一个文件。所以我使用Intent.ACTION\u OPEN\u DOCUMENT\u树。谷歌说我需要使用DocumentFile而不是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();
这段代码不会重写我的文件,而是创建另一个名为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();