Not all files have a length (even in Windows)! Think stdio, networking, etc.
allocRemaning*will do a single allocation if the length can be gotten (or limit if that is smaller) otherwise it follows the same growth pattern as an array list.
it is .read_only by default per the default field value.
The other options are more niche than this API would typically be used as, so it is not unreasonable that it doesn’t take OpenFileOptions. But that doesn’t mean it shouldn’t either.