We could refactor the file classes into simple io classes and readers/writers similar to .Net
BufferedFile would become a buffered_reader and separate buffered_writer which are both simpler to implement because of the missing read-write-access.
Additionally we could write a buffered_reader_writer which would have read-write-access.
Maybe we should also add an abstract_file as base class providing the interface.
Something like a memory_file would only be the storage. We could even think of adjusting raw_storage for this task.
We could also redesign the functionality of a temporary_file which is problematic ATM (at least with Linux).
This would also open the way for "stacking" readers, like a zlib_reader, or network sources like an ssh_file or something like this.
Maybe, we could even make the memmapped_file beneficial again (i.e. allowing for request mapping "ahead" before reading).
I was also thinking about reader classes, but did not yet come to a conclusion whether it is a good idea to have the whole ".NET stack" of file, stream, reader. Having this would be nice wrt. the network part, because one could think of a reader reading from stream sockets, too.