не удалось создать контент из OutputStream - PullRequest
0 голосов
/ 22 марта 2019

Изначально у меня есть:

Созданный файл с некоторым содержимым во внутренней памяти:

DocumentFile newFile = pickedDir.createFile("text/plain", filename);
OutputStream out = context.getContentResolver().openOutputStream(newFile.getUri());

out.write("some old content".getBytes());
out.close();
return newFile.getUri().toString();

, поэтому в конце я получил строку uripath из DocumentFile.getUri().toString();

Теперь я хочу переписать этот файл.Что бы я ни делал, размер файла остается неизменным.Если новый контент больше старого, он просто обрезает его.Если содержимое меньше, например, всего несколько символов, оно добавляет специальные символы \00, чтобы заполнить старый размер.

вот важная часть метода:

 OutputStream out = context.getContentResolver().openOutputStream(Uri.parse(filepath));

 String content = "sime new content"

 IOUtils.write(countent, out, "UTF-8");
 out.close();

Итак, как мне действительно переопределить мой файл новым содержимым?

РЕШЕНИЕ

проблема была не в самом OutputStream, а в кэшированном файле на Android-устройстве.Я проверил содержимое файла, когда мой телефон был подключен к компьютеру через USB (к компьютеру с Linux).И в этом случае размер файла был кэширован.После отключения телефона от сети можно увидеть, что файл обновлен правильно.так что не обращайте на это внимания с помощью outputStream.

...