Файлы имеют одно состояние ошибки и общий индикатор положения файла, который используется для операций чтения и записи.
Если установлен статус ошибки, то ни операции чтения, ни записи в файле не будут выполнены успешно. Чтение после конца файла - это один из триггеров, который приведет к установке статуса ошибки, в этом случае, пока индикатор положения файла не будет перемещен в пределах границ файла.
Поскольку имеется только один индикатор положения как для чтения, так и для записи, вам необходимо перемещать этот индикатор каждый раз, когда вы переключаетесь между чтением и записью одного и того же файла, чтобы убедиться, что вы выполняете следующую операцию в позиции, в которой вы собираетесь произойти.