在 Android 随机访问写入 SAF 文件

Random access write to SAF file on Android

我正在尝试对从 Android 存储访问框架检索到的流执行“随机访问”写入。

在我的场景中,我使用 OPEN_DOCUMENT intent 选择了一个文件,它为我提供了一个文档 URI。然后我就可以用ContentResolveropenOutputStream了。不过,从那时起,我看不到一种在流中“寻找”以写入文件中给定位置的方法。

有没有办法实现这个(至少对于本地 storage/SD 基于卡片的文件)?

at least for local storage/SD card-based files

你不知道这就是你得到的。用户可以选择用户想要的任何文档提供者(例如,Google Drive)。

I don't see a way to "seek" within the stream to write on a given position within the file

部分原因是 Java 流很烂。但是,主要是为了文档提供者的灵活性。假设用户选择了一个在本地存储其内容但使用流密码加密的提供商。然后你不能随便跳到某个地方——数据必须在途中被解密。

AFAIK,您唯一的选择是将内容复制到您控制的某个文件,之后您可以随机访问该文件。