无法从OutputStream创建内容

时间:2019-03-22 11:10:00

标签: android file uri outputstream android-internal-storage

我本来拥有的是:

创建的文件,其中一些内容位于内部存储器上

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。

0 个答案:

没有答案