При открытии файла в поле файловой переменной записывается полная информация об открываемом файле: внутреннее и внешнее имя, тип файла, направление передачи данных, размер файла, дата его создания и др. Одновременно в оперативной памяти создается специальная область, называемая буфером ввода-вывода и предназначенная для ускорения операций передачи данных между памятью и внешними устройствами. Только после открытия файла могут быть выполнены операции ввода или вывода для данного файла.
В Турбо Паскале можно открыть файл только для чтения, только для записи, а также для чтения и записи одновременно. Для этого используются процедуры Reset, Rewrite, Append.
Reset(F) - открытие существующего файла. Если это текстовый файл, то допускается только чтение из файла; для типизированного файла допустимы как чтение, так и запись информации. В последнем случае можно реализовать обновление компонентов файла.
Если файл F уже был открыт, то при выполнении процедуры Reset этот файл сначала закрывается, а затем открывается. При этом указатель файла устанавливается в начальную позицию файла.
Rewrite(F) - открытие нового файла. Если это текстовый файл, то допускается только запись в файл; для типизированного файла допустимы как чтение, так и запись информации. Если файл F уже существует, то при срабатывании процедуры Rewrite файл F предварительно уничтожается.
Append(F) - открытие текстового файла для добавления новых компонентов в конец файла. Если файл уже был открыт ранее с помощью процедур Reset или Rewrite, то процедура Append вначале закрывает данный файл, а затем его открывает для добавления новых компонентов.
Если в программе имеется фраза "Uses Printer", то это эквивалентно наличию следующего фрагмента:
Var Lst : text;
Begin
Assign(Lst,’Lpt1’); Rewrite(Lst);
Быстродействие оперативной памяти определяется ее электронными компонентами, быстродействие внешних устройств (например, накопителя на магнитном диске) - их механическими компонентами. Эти показатели быстродействия отличаются между собой на два-три порядка. Для сокращения потерь машинного времени на операции обмена данными между внешними устройствами и оперативной памятью используется буфер ввода-вывода, представляющий собой область памяти, отводимую каждому файлу при его открытии. При записи в файл вся информация сначала направляется в буфер и там накапливается до тех пор, пока весь объем буфера не будет заполнен. Только после этого или после специальной команды сброса буфера происходит передача данных на диск. Аналогично при чтении из файла считывается не столько, сколько запрашивается в процедуре ввода, а сколько поместится в буфер. Процедуры ввода фактически выбирают данные из буфера до его исчерпания, после чего следует новая передача данных из файла в буфер.
По умолчанию размер буфера ввода-вывода для файла равен 2048 байт, но может регулироваться программистом. При вводе с клавиатуры максимальный размер буфера ввода равен 127 символов (соответственно строка символов на экране не может превышать указанного размера).