Then all of the read and write calls would have to pass this information on each operation:
- the name of the file
- the permissions of the file
- whether the caller is appending or creating
- whether the caller is done working with the file (to discard unused read-buffers and ensure write-buffers really finished writing)
Whether you consider the independent calls open, read, write and close to be simpler than a single-purpose I/O message is based on your design philosophy. The Unix developers chose to use simple operations and programs which can be combined in many ways, rather than a single operation (or program) which does everything.