if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    ContentResolver contentResolver = activity.getContentResolver();
    ContentValues values = new ContentValues();
    values.put(MediaStore.MediaColumns.DISPLAY_NAME, "log.txt");
    values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS + File.separator);
    values.put(MediaStore.MediaColumns.MIME_TYPE, "text/plain");
    values.put(MediaStore.MediaColumns.IS_PENDING, 1);

    Uri mediaUri = contentResolver.insert(
            MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY),
            values);
   try (OutputStream outputStream = contentResolver.openOutputStream(mediaUri, "wt")) {
        // Write your data here
        OutputStreamWriter osw = new OutputStreamWriter(outputStream);
        osw.write("some text");
        osw.close();
        values = new ContentValues();
        values.put(MediaStore.MediaColumns.SIZE, 4);
        values.put(MediaStore.MediaColumns.IS_PENDING, 0);
        contentResolver.update(mediaUri, values, null, null);
    } catch (IOException e) {
        // Handle exceptions
    }
}

The above code create files log.txt, log(1).txt, log(2).txt...

I want to create only one file: log.txt

I took a look at this SO answer and this is why the code has the following with "wt":

try (OutputStream outputStream = contentResolver.openOutputStream(mediaUri, "wt")) {
0

There are 0 best solutions below