An alternative if exclusive access is needed during a write operation would be to implement a file locking method.
Using UNIX as an example, the original open() kernel function returned with an error if the requested file couldn’t be opened, with an error code describing why. If the user then wanted to create a non-existent file, he/she would have to call the creat() kernel function to do so—which, of course, might also fail.
In later UNIX kernels, as well as with Linux, open() may be called with the optional O_CREAT flag as an argument so a non-existent file may be created as part of the open process—one-stop shopping, as it were. Note that despite that added feature, open() never assumes that it should create a non-existent file, which honors the “rule of least surprise.”
In a more expansive sense, low-level system calls of any type should do only the absolute minimum needed to carry out their designated functions. The more features added to a kernel call, the greater the chance that, at some point, the rule of least surprise will be broken and the programmer will end up chasing bugs caused by kernel behavior that is unwanted.