Как добавить в файл с помощью структуры доступа к хранилищу Android?

Как я могу использовать структуру доступа к хранилищу, чтобы получить FileOutputStream для добавления в файл? Следующий код перезаписывает файл

void write(Uri uri){
        try {
            ParcelFileDescriptor descriptor=getContentResolver().openFileDescriptor(uri,"w");
            if(descriptor!=null) {
                FileOutputStream op=new FileOutputStream(descriptor.getFileDescriptor());
                op.write("test string".getBytes());
                op.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Я знаю, что делаю это с помощью java.io.File, используя FileOutputStream(File file,boolean append)

Но я не вижу FileOutputStream(FileDescriptor fd,boolean append)


person ajk    schedule 04.01.2019    source источник


Ответы (2)


Если вы хотите добавить в файл, вам нужно использовать режим доступа «wa» вместо «w» в этом вызове:

ParcelFileDescriptor descriptor =
    getContentResolver().openFileDescriptor(uri, "w");
person David Wasser    schedule 04.01.2019
comment
поддерживаются только r w t, и оба w a выдают исключение - person Amanth Rai; 05.05.2020

Вместо создания FileOutputStream из

FileOutputStream op = new FileOutputStream(descriptor.getFileDescriptor());

вы можете напрямую получить OutputStream, используя

context.getContentResolver().openOutputStream(yourUri, "wa");

и предоставьте следующие режимы w wa rw или rwt и для добавления существующего файла используйте wa

person Amanth Rai    schedule 05.05.2020