Лекция: Файлы последовательного доступа

 

Последовательный файл состоит из текстовых строк ASCII- формата. Любая информация считывается или сохраняется в текстовом виде построчно. Последовательные файлы могут обрабатываться любым текстовым редактором.

Способ открытия файла с последовательным доступом (для чтения, записи или добавления) задается при вызове оператора открытия файла:

Open имяФайла For режим As дескрипторФайла

Где: имяФайла определяет имя открываемого файла; это либo строка символов, заключенная в кавычки, либо выражение, значением которого является строка символов. Она представляет собой путь к открываемому файлу;

режим — это режим доступа, который может иметь значения:

Input (Ввод) — если файл открывается для чтения из него текстовых данных.

Output (Вывод)- если файл открывается для записи в него данных, начиная с первой позиции. Вся имевшаяся в нем старая информация будет стерта.

Append (Дополнение) — если файл открывается для записи в него данных не с первой, а с конечной позиции, так что вся имевшаяся в нем старая информация будет сохранена.

дескрипторФайла — целое число, по которому идентифицируется открываемый файл. Файловые номера используются при выполнении файловых операций в программе.

Все открытые файлы закрываются оператором:

Close [списокДескрипторов]

списокДескрипторов — это записанные через запятую дескрипторы файлов, которые должны быть закрыты. При отсутствии этого параметра будут закрыты все открытые файлы.

Для записи в файл используются операторы:

Print # ДескрипторФайла, [СписокЗначений]

Write # ДескрипторФайла, [СписокЗначений]

Где: СписокЗначений — это записанные через разделитель значения (или выражения).

Оба оператора записывают данные в файл текстовыми строками. Текстовая строка — это последовательность символов, которая заканчивается символом перехода на новую текстовую строку или символом возврата каретки (коды 13 и 10). Текстовый файл представляет собой последовательность текстовых строк.

Логика работы операторов Write и Print различна.

Оператор Write

Разделителем в списке значений является запятая. Список значений просматривается последовательно, и элементы этого списка записываются в одну текстовую строку файла через запятую. Элементы типа String заключаются в кавычки. После записи последнего элемента записывается символ перехода на новую строку.

Пример: Напишем программу записи в текстовый файл следующих строк:

«Иванов», 1982

«Петров», 1984

«Сидорова», 1983

«Крылов», 1980

В каждой строке — фамилия и год рождения.

На рис. 2.23. в окне редактора кодов приведен текст процедуры создания текстового файла с использованием оператора Write.

 
 

Вариант 1

Оператор Print

Элементы списка значений в этом операторе должны быть разделены либо точкой с запятой, либо запятой. От этого зависит, как они будут записаны в текстовую строку файла:

— если (;) — значения будут записываться подряд, без промежутков между ними;

— если (,) — значения будут записываться в 14-символьные зоны вывода.

Кроме того, в списке значений оператора могут присутствовать функции:

1) Spc(n) — для вставки n пробелов между значениями в текстовой строке;

2) Tab(n) — для указания номера n позиции для записи следующего значения.

На рис. 2.24. в окне редактора кодов приведен текст процедуры создания текстового файла с использованием оператора Print.

 
 

Вариант 2

 

Для чтения из файла используются:

— оператор Input #ДескрипторФайла СписокПеременных

-оператор Line Input # ДескрипторФайла Переменная

— функция Input (ЧислоСимволов, дескрипторФайла)

Оператор Input

Список переменных — это записанные через запятую переменные любого типа. В каждой текстовой строке файла количество и тип значений должны совпадать с количеством и типом переменных в списке переменных.

Оператор Line Input

Переменная — это переменная типа String или Variant. Результатом работы этого оператора является присвоение Переменной значения — всей очередной текстовой строки файла.

Функция Input

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

 
 

Аналогичный результат дает работа программы, использующей оператор Line Input:

Private Sub Command3_Click()

Dim ts As String

Open «c:\ГодР1.txt» For Input As #1

Do Until EOF(1)

Line Input #1, ts

Print ts

Loop

Close #1

End Sub

Пример использования функции Input:

Private Sub Command3_Click()

Dim ks As Integer

Open «c:\ГодР1.txt» For Input As #1

ks = LOF(1)

Print Input(ks, #1)

Close #1

End Sub

При обработке файлов также используются функции:EOF(дескрипторФайла) — возвращает значение True, если обнаружен конец файла и False — в противном случае.

LOF(дескрипторФайла) — возвращает размер текстового файла в символах.

 

еще рефераты
Еще работы по информатике