14 · Файловая система
Файловая система
Текст, с которым работает программа, обычно хранится в файле, и обращаться с ним приходится по-разному. Иногда достаточно одной операции над целым файлом, иногда нужен последовательный доступ: прочитать строку, вернуться к позиции, дописать в конец. Первый случай обслуживают функции, принимающие путь STRING, второй — открытый ресурс FILE, который вводит оператор OPEN и освобождает оператор CLOSE.
Два способа работы
Для одноразового чтения всего текста служат READFILE и READALLLINES, для полной записи — WRITEFILE и APPENDFILE. Функция получает путь и выполняет операцию целиком.
Последовательная работа устроена иначе: переменная FILE объявляется в программе, открывается оператором OPEN, передаётся функциям чтения, записи и позиционирования и закрывается оператором CLOSE. Такой ресурс нужен, когда текст обрабатывают по частям или возвращаются к уже прочитанному месту.
Обе возможности видны в короткой программе:
DIM path AS STRING = MAKETEMPFILE("manual_")
WRITEFILE(path, "Axiom")
PRINT READFILE(path)
DELETEFILE(path)Ожидаемый вывод:
AxiomПуть создаётся функцией MAKETEMPFILE, поэтому заранее подготовленный файл не нужен. Запись и чтение выполняются одной функцией каждая, а последняя инструкция удаляет файл.
Пути и кодировки
Относительные пути разрешаются от CURRENTDIR() текущего запуска. Функции создания файлов не создают отсутствующий родительский каталог, а MAKEDIR создаёт каталог вместе с недостающими родителями.
Кодировка выбирается одинаково для обеих форм работы. Без явного указания чтение целого файла и OPEN FOR INPUT проверяют UTF-8, а при недопустимых байтах переходят к WINDOWS-1251; запись по умолчанию идёт в UTF-8 без BOM. Явно можно выбрать UTF-8, WINDOWS-1251, UTF-16LE или UTF-16BE. Правила проверки BOM и строгого кодирования описаны в OPEN и текстовых функциях.
Подразделы
Подробности собраны на отдельных страницах:
Целый текстовый файл и существование · Открытый FILE · Пути и свойства · Управление объектами · OPEN · CLOSE
Ошибки
Отсутствующий требуемый объект, недопустимый путь, отказ доступа, неверный режим ресурса и недопустимая кодировка обычно дают MB3007 во время выполнения. Ошибки типов и числа аргументов обнаруживаются при проверке программы. Применимые случаи перечислены в карточке каждой операции.