В соответствии со способом доступа к файлам они делятся на два вида.
1. Файл с последовательным доступом;
2. Файл с прямым доступом.
Файлы последовательного доступа наиболее просты как в организации, так и в работе с ними. Записи обрабатываются последовательно одна за другой.
Информация в таких файлах хранится в виде текста в кодах ASCII. Такие файлы легко просмотреть на экране, используя любой простейший редактор, или в самом Бейсике.
Простота — хорошо, а последовательность в данном случае — плохо. Если информация об интересующем объекте упорядочена в файле по алфавиту, то придется перебирать практически весь файл, чтобы добраться до нужной записи. Отсюда, при большом информационном объеме файла обработка его замедляется.
Файлы прямого доступа хранят информацию в специальном формате, в котором каждая запись занимает строго фиксированную одинаковую с остальными длину. Такие файлы занимают на диске больше места, чем файлы последовательного доступа, но скорость работы с ними значительно выше.
Операции над файлами
Независимо от того, какие действия происходят с информацией, хранящейся в файле, производятся следующие обязательные операции:
1. открытие файла;
2. чтение и запись обрабатываемых данных;
3. закрытие файла.
Открытие файла
Для открытия файла предназначен оператор open, имеющий следующий формат:
OPEN имя_ файла FOR режим AS # номер файла
Режим определяет доступ к данным файла. Возможны следующие режимы:
· INPUT. Это режим чтения информации из файла. В случае если указывается несуществующее имя файла, возникнет сообщение об ошибке "Файл не найден".
· OUTPUT. Режим записи информации в файл. Обычно при этом создается новый файл. Если же открывается для записи уже существующий файл, то ранее хранимая в нем информация будет утеряна.
· APPEND. Режим добавления информации в файл. Новая информация будет размещена в конце файла, за последней записью.
Номер файла предваряется знаком #, после которого следует целое
число от 1 до 255.
Запись в файл
Рассмотрим пример записи в файл.
OPEN "capitals.dat" FOR OUTPUT AS #1
FOR X=l TO 5
INPUT "ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ"; F$
WRITE #1, F$
NEXT X
CLOSE #1 :END
В результате работы программы мы получим (полужирным шрифтом выделены введенные с клавиатуры данные):
ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? МОСКВА
ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? САНКТ-ПЕТЕРБУРГ
ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? ТАЛЛИН
ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? РИГА
ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? ВИЛЬНЮС
При этом на диске в текущем каталоге образуется файл, содержащий пять строковых значений. Имя файла будет capitals.dat. Удобнее всего при работе с файлами сделать текущим каталог, где эти файлы содержатся или будут содержаться, а при обращении к ним указывать только их имена.
В качестве параметра имя_файла можно использовать переменную текстового типа. Это позволяет вводить имя файла с клавиатуры и является универсальным способом работы с файлами. На пример:
INPUT «Введите имя файла "; FileName$
OPEN FileName$ FOR OUTPUT AS #1
После ключевого слова as указывается номер файла. Больше открыть файл с таким номером в данной программе нельзя. Для каждого последующего файла должен быть указан свой собственный неповторимый номер в пределах от 1 до 255. Сколько всего может быть открыто файлов, зависит от файла конфигурации вашего компьютера config.sys, в котором число одновременно открытых файлов определяется командой files.
Представленный далее пример демонстрирует программу создания небольшой базы данных автомобилей, предназначенных для продажи. О каждом автомобиле заносится информация о его марке, номере, цвете, годе производства и продажной цене.
REM Программа создания файла данных об автомобилях
CLS
INPUT «Введите имя файла"; F$
Открытие файла
OPEN F$ FOR OUTPUT AS #1
DO
INPUT "Марка автомобиля? (Для окончания работы введите QWE.); М$
IF UCASE$(M$)="QWE" OR OCASE$(М$)="ЙЦУ" THEN 1
INPUT "Номер автомобиля?"; N$
INPUT "Цвет автомобиля?"; С$
INPUT "Год производства автомобиля?"; G$
INPUT "Продажная цена автомобиля?"; S$
WRITE #1, М$, N$, C$, G$, S$
LOOP
' Закрытие файла
1 : CLOSE #1 PRINT "Файл сформирован"
Программа действует следующим образом. Запрашивает имя файла, открывает его для записи, запрашивает информацию, записывает ее в файл до введения пользователем сочетания букв "QWE" или "ЙЦУ" (эти символы расположены на одних клавишах, вследствие чего пользователь может случайно набрать как одну комбинацию, так и другую).
Запись в файл может производиться операторами:
PRINT # номер_файла, выражение
ИЛИ
WRITE # номер_файла, выражение
Результат работы этих операторов одинаков.