Как переписать DocumentFile

Я хочу позволить пользователю выбрать папку, и мое приложение создаст файл в этой папке. Поэтому я использую Intent.ACTION_OPEN_DOCUMENT_TREE, Google говорит, что мне нужно использовать 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.

Заранее спасибо.

1 ответ

Решение
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();
Другие вопросы по тегам