Axiom Справочник языка

14 · Файловая система

Оператор CLOSE

Открытый файл удерживает ресурс и часть записанного текста до тех пор, пока запись не будет завершена. CLOSE закрывает открытый текстовый файл: передаёт в поток накопленные байты и освобождает переменную FILE, после чего её снова можно открыть оператором OPEN.

Синтаксис

Оператор состоит из ключевого слова CLOSE и имени файловой переменной.

CLOSE <файл>

Он завершает текущий период работы с файлом, поэтому применяется к ресурсу, ранее открытому оператором OPEN, и доступен в любом выполняемом участке программы без SCREEN.

Аргумент

Файл — простая переменная типа FILE, содержащая открытый ресурс. Выражение пути, поле записи и список нескольких файлов не являются этой формой.

Действие и ограничения

Накопленные байты передаются в поток, затем ресурс освобождается. После успешного закрытия ISOPEN возвращает FALSE; остальные файловые функции, требующие открытого ресурса, недоступны до нового OPEN. Повторное закрытие недопустимо.

Даже при ошибке завершения записи ресурс освобождается. Часть текста могла не сохраниться; повторять CLOSE для этого ресурса не нужно. При завершении запуска исполнитель пытается закрыть все оставшиеся ресурсы, и отказ одного закрытия не отменяет другие попытки.

Проверить момент освобождения позволяет ISOPEN до и после закрытия:

DIM path AS STRING = MAKETEMPFILE("manual_")
DIM f AS FILE
OPEN path FOR OUTPUT AS f
WRITE(f, "Axiom")
PRINT ISOPEN(f)
CLOSE f
PRINT ISOPEN(f)
PRINT READFILE(path)
DELETEFILE(path)

Ожидаемый вывод:

TRUE
FALSE
Axiom

Первое значение TRUE относится к ещё открытому ресурсу. Второе FALSE появляется уже после CLOSE, а третья строка показывает, что записанный текст к этому моменту находится в файле и доступен обычному чтению по пути.

Диагностика

MB2003 означает переменную другого типа. MB3007 возникает при закрытии неоткрытого ресурса и при ошибке завершения записи; такую ошибку можно перехватить через TRY.

См. также

OPEN · Функции FILE · TRY