Тeкстовые файлы, их описание и основные отличия от типизированных файлов

Наряду с типизированными файлами Pascal имеет средства взаимодействия с файлами несколько иной структуры - так называемыми текстовыми файлами. Введение текстовых файлов несколько нарушает стройность языка, однако позволяет использовать Pascal при программировании широкого класса задач, имеющих нечисловой характер и связанных с обработкой текстовой информации.

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

Структура текстовых файлов отличается от структуры обычных файлов (которые представляют собой линейную последовательность элементов одного типа) тем, что содержимое текстового файла рассматривается как последовательность строк переменной длины, разделённых специальной комбинацией кодов, называемой "конец строки". Как правило, эта комбинация строится из управляющего кода "возврата каретки" (CR, Carriage Return, символ #13), за которым, возможно, следует управляющий код "перевод строки" (LF, Line Feed, символ #10). При вводе c клавиатуры признаком конца строки считается нажатие клавиши Enter.

Текстовый файл завершается специальным кодом "конец файла" (символ #26). В большинстве случаев знание конкретной кодировки управляющих символов не обязательно ввиду наличия файловых операций, автоматически учитывающих эти символы.

Таким образом, текстовый файл структурно несколько похож на "файл из байтов" (file of byte) с той разницей, что в нем, помимо содержательной информации, встречаются символы специального назначения.

Его можно схематически представить в следующем виде:

..............#13#10
....................#13#10
.................#13#10
............#13#10
..........................#13#10
#26

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

С каждым файлом на диске в программе должна быть связана некоторая файловая переменная, которая описывается в соответствии с типом файла. Текстовому файлу в Pascal-программе соответствует переменная, которая должна быть описана с указанием стандартного типа text:

Var TextFile: text;

Примечание. Слово text не является зарезервированным словом, а считается идентификатором стандартного типа, наряду с идентификаторами integer, real и т.д.

После описания переменной типа text ее надо связать с конкретным файлом процедурой assign. Вся последующая работа с файлом будет вестись через файловую переменную.

Далее доступ к файлу требуется открыть на чтение или на запись, для этого существуют процедуры reset и rewrite.

К примеру, пусть на диске создан текстовый файл text.txt. Для Turbo Pascal описание и связывание файловой переменной f с файлом text.txt, будет выглядеть так:

Var f: text; Begin assign(f, 'd:\tp7\bin\text.txt'); {Полный путь к файлу } reset(f);{Открыть на чтение]... End.

Процедура assign(<файловая переменная>, <полный путь до файла на диске>) - связывает файл на диске с файловой переменной типа Text.

Примечание. Процедура assign не должна использоваться для открытого файла.

Если при вызове процедуры assign в качестве имени файла задается пустая строка: assign(f,''), то после обращения к reset(f) переменная f будет связана со стандартным файлом ввода, а после обращения к rewrite(f) – со стандартным файлом вывода.

Процедура reset(<файловая переменная>) - открывает файл на чтение.

Ввод-вывод для текстовых файлов подчиняется тем же правилам, что и для типизированных файлов; однако имеется несколько важных особенностей.

Во-первых, для одного текстового файла нельзя одновременно производить операции и ввода, и вывода. Это означает, что после открытия текстового файла процедурой reset возможно только чтение информации из файла, а после процедуры rewrite - только запись в файл.

Во-вторых, обмены с текстовыми файлами всегда являются строго последовательными, то есть после чтения из файла элемента с порядковым номером N следующая операция чтения даст элемент с номером N+1. Иными словами, прямой доступ к любому элементу текстового файла невозможен; для текстовых файлов не допускаются вызовы Seek, FilePos, FileSize.

Под чтением файла понимают ввод данных из внешнего файла, находящегося на диске, в оперативную память компьютера. Данные файла становятся доступными программе. Внешний файл, из которого читаются данные, часто называют входным файлом.

Базовой техникой обменов с текстовыми файлами является посимвольный ввод-вывод. При этом производится чтение или запись всех символов, как информационных, так и специальных.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: