Currently the expo filesystem only allows to write full strings to a file. Also reading partial strings with the position and length attribute is only possible with the base64 encoding.
To have a "fully featured" filesystem, only a small set of additional features is missing. Adding these would allow for a wide range of applications that do granular binary writes and reads to files. For example it could simulate the new browser OPFS api or even run a full database on it like a RxDB storage or a custom SQLite with OPFS persistence
The missing parts are position options in the options of writeAsStringAsync and readAsStringAsync.
When implemented, thesse would be used like the following:
  1. Write partial data to a file at position 10:
await writeAsStringAsync(fileName, 'foobar', {
at: 10 // <- write at position 10
});
  1. Read partial data from file (even on non-base64):
const content = await readAsStringAsync(fileName, {
position: 2,
length: 5
});