При этом на внешнем носителе создается новый физический файл с заданным именем. Если файл с таким же именем уже существовал, то он очищается. С каждым файлом связан указатель текущего элемента (записи). В этом случае этот указатель становится в начало файла – элемент с номером 0.
Внимание! Нумерация элементов файлов начинается с нуля!
б) открытие существующего файла для чтения и записи в него данных:
При этом на внешнем носителе отыскивается файл с заданным именем и, если он найден, то указатель текущей записи становится в начало файла – на запись с номером 0.
Запись в открытый для записи файл осуществляется оператором
Write(файловая переменная, имя записываемой переменной);
Например,
Write(f_int, n); записать в файл f_int значение переменной n
Внимание! Оператор WriteLn использовать нельзя.
В этом случае значение переменной n записывается в файл на то место, где стоит указатель текущей записи. Если там была какая-то запись, то она заменяется новой. После записи указатель автоматически перемещается на следующую позицию. Если указатель перед этим находился на метке EOF - в конце файла, то новая запись помещается в конец файла и файл автоматически расширяется.
Из открытого для чтения файла можно прочитать все записи и вывести их, например, на экран:
ReSet(f_int); открываем файл f_int для чтения
While Not(EOF(f_int) Do пока не конец файла f_int
Read(f_int,n); читаем из него очередную запись в переменнуюn
Write(n:5); выводим прочитанное значение на экран
WriteLn; текстовый курсор – в начало новой строки на экране
Внимание! Оператор ReadLn при чтении типизированных файлов использовать нельзя.
Таким образом, типизированный файл читается с помощью цикла с предусловием While. Условие окончания цикла – чтение метки конца цикла EOF.
После окончания работы с файлом он должен быть закрыт оператором:
Close(файловая переменная);
Например,
Пример записать в целочисленный файл несколько чисел, вводимых с экрана. Конец ввода – число 0. Прочитать эти числа из файла и вывести их на экран в одну строку.
Интерфейс программы:
Введите число: 3
Введите число: -1
Введите число: 5
Введите число: 12
Введите число: -6
Введите число: 0
Введены числа:
Программа:
Program File_1;
Var n : Integer;
f_int : File Of Integer;
Assign(f_int, ‘d:\User\f_int.dat’);
Write(‘Введите число:’);
If (n <> 0)
Until (n=0);
Схема алгоритма: While Not(EOF(f_int)) Do
Begin
Write(n:5);
Для работы с типизированными файлами используются следующие функции:
FileSize(файловая переменная) - текущий размер файла – количество записей в файле,
FilePos(файловая переменная) - номер текущей записи в файле – позиция указателя текущей записи (нумерация записей начинается с нуля, номер последней записи на единицу меньше текущего размера файла),
и процедуры:
Seek(файловая переменная, номер) - перемещение указателя на запись с заданным номером (нумерация записей начинается с нуля),
Truncate(файловая переменная) - усечение файла после текущей записи: все записи в файле после текущей удаляются, и после нее ставится метка конца файла EOF,
Erase(файловая переменная)- уничтожение файла – стирание его с диска.
Пример: открыть файл, созданный предыдущей программой, определить его конечный размер, номер начальной записи, поставить указатель на третью запись (по номеру), вывести ее на экран, усечь файл, начиная с нее и вывести новый файл на экран: