Файлы и примеры работы с файлами
Файл — это логическое понятие, связанное с физически существующим набором данных.
Файловые типы предназначены для работы с внешними устройствами.
Передача данных с внешнего устройства в оперативную память называется чтением или вводом, обратный процесс – записью или выводом.
Определены три типа файлов:• текстовые; • нетипизированные;• типизированные;
Текстовый файл состоит из строк символов. Конец записи определяется концом строки. Чтение и запись в файл осуществляется посимвольно. Типизированный файл состоит из записей любого типа.
Особенности типизированных файлов: • файл может состоять из записей любого типа; • данные передаются целыми записями (не символами или строками); • при создании файла записи в нем автоматически нумеруются;
Нетипизированные файлы - каналы ввода/вывода нижнего уровня, исполь-зуемые в основном для прямого доступа к любому файлу на диске, неза-висимо от его типа и структуры.
Доступ к файлам может быть последовательным или прямым.
Последовательный доступ – очередной элемент можно прочитать только после прочтения предыдущего.
Прямой доступ – чтение произвольного элемента выполняется по задан-ному адресу (процедура Seek).
Такой способ возможен для файлов всех типов, кроме текстового (т.е. для типизированных и нетипизированных, в которых каждой записи ста-вится в соответствие ее порядковый номер.
При использовании прямого доступа необходимо перед каждой операцией чтения (записи) задать номер записи, которая должна быть обработана. После выполнения операции указатель файла устанавливается перед сле-дующей записью (т.е. перед записью с номером, увеличенным на 1).
Для установки указателя на нужную запись используется специальная процедура Seek, которая в общем виде записывается так:
Для разграничения файлов в программе и файлов на диске, переменные файлового типа называют логическими файлами, а реальный файлы на диске физическими файлами.
Организация ввода-вывода:
• объявление файловой переменной;
• связывание файловой переменной с физическим файлом;
• открытие файля для чтения и/или записи;
• выполнение операции ввода-вывода;
• закрытие файла;
Замечания.
• Клавиатура, принтер, дисплей - устройства. Устройство можно представить как на-бор данных и с ним можно работать, используя те же процедуры и функции, которые применяются для работы с файлом.
• Устройства: Con – консоль, посредством которой выводимая информация пересылается на экран, а вводимая информация воспринимается с клавиатуры; Lpt1 или Prn – по-строчное устройство печати.
• Когда начинается выполнение программы, всегда автоматически открываются два тек-стовых файла Input и Output. Input (ввод) – это доступный только для чтения файл, связанный с клавиатурой, а Output (вывод) – это доступный только для запи-си файл, связанный с дисплеем.
• Rewrite создает и открывает новый файл. Если внешний файл с указанным именем уже существует, то он удаляется и на его месте создается новый пустой файл. Текущая позиция в файле устанавливается на начало файла. Если открывается текстовый файл, то он становится доступным только для записи.
•Reset открывает существующий файл. Если файл уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция файла устанавливается на начало файла. Если открывается текстовый файл, то он становится доступным только для чтения.
• Append открывает существующий текстовый файл для добавления записей в конец файла. Если файл уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция устанавливается на конец файла.
• Сlose. В момент закрытия осуществляется полное обновление внешнего набора данных, связанного с файловой переменной, после чего связь с набором данных разрывается. Потом файл можно открыть снова.
Пример. Создание текстового файла. Ввести с клавиатуры n строк, записать их в текстовый файл. Имя набора данных задать с клавиатуры.
Передача данных с внешнего устройства в оперативную память называется чтением или вводом, обратный процесс – записью или выводом.
Определены три типа файлов:• текстовые; • нетипизированные;• типизированные;
Текстовый файл состоит из строк символов. Конец записи определяется концом строки. Чтение и запись в файл осуществляется посимвольно. Типизированный файл состоит из записей любого типа.
Особенности типизированных файлов: • файл может состоять из записей любого типа; • данные передаются целыми записями (не символами или строками); • при создании файла записи в нем автоматически нумеруются;
Нетипизированные файлы - каналы ввода/вывода нижнего уровня, исполь-зуемые в основном для прямого доступа к любому файлу на диске, неза-висимо от его типа и структуры.
Доступ к файлам может быть последовательным или прямым.
Последовательный доступ – очередной элемент можно прочитать только после прочтения предыдущего.
Прямой доступ – чтение произвольного элемента выполняется по задан-ному адресу (процедура Seek).
Такой способ возможен для файлов всех типов, кроме текстового (т.е. для типизированных и нетипизированных, в которых каждой записи ста-вится в соответствие ее порядковый номер.
При использовании прямого доступа необходимо перед каждой операцией чтения (записи) задать номер записи, которая должна быть обработана. После выполнения операции указатель файла устанавливается перед сле-дующей записью (т.е. перед записью с номером, увеличенным на 1).
Для установки указателя на нужную запись используется специальная процедура Seek, которая в общем виде записывается так:
Для разграничения файлов в программе и файлов на диске, переменные файлового типа называют логическими файлами, а реальный файлы на диске физическими файлами.
Организация ввода-вывода:
• объявление файловой переменной;
• связывание файловой переменной с физическим файлом;
• открытие файля для чтения и/или записи;
• выполнение операции ввода-вывода;
• закрытие файла;
Замечания.
• Клавиатура, принтер, дисплей - устройства. Устройство можно представить как на-бор данных и с ним можно работать, используя те же процедуры и функции, которые применяются для работы с файлом.
• Устройства: Con – консоль, посредством которой выводимая информация пересылается на экран, а вводимая информация воспринимается с клавиатуры; Lpt1 или Prn – по-строчное устройство печати.
• Когда начинается выполнение программы, всегда автоматически открываются два тек-стовых файла Input и Output. Input (ввод) – это доступный только для чтения файл, связанный с клавиатурой, а Output (вывод) – это доступный только для запи-си файл, связанный с дисплеем.
• Rewrite создает и открывает новый файл. Если внешний файл с указанным именем уже существует, то он удаляется и на его месте создается новый пустой файл. Текущая позиция в файле устанавливается на начало файла. Если открывается текстовый файл, то он становится доступным только для записи.
•Reset открывает существующий файл. Если файл уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция файла устанавливается на начало файла. Если открывается текстовый файл, то он становится доступным только для чтения.
• Append открывает существующий текстовый файл для добавления записей в конец файла. Если файл уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция устанавливается на конец файла.
• Сlose. В момент закрытия осуществляется полное обновление внешнего набора данных, связанного с файловой переменной, после чего связь с набором данных разрывается. Потом файл можно открыть снова.
Пример. Создание текстового файла. Ввести с клавиатуры n строк, записать их в текстовый файл. Имя набора данных задать с клавиатуры.
Program SozdText; Var Tx:Text;{Имя текстового файла} FilName : String; {Имя набора данных} Stroka : String; {Строка текста} i,n : Integer; {Вспомогательные переменные} Begin Writeln(’Введите имя набора данных’); Readln (FilName); {Ввести Имя Набора Данных} Assign(Tx,FilName); {Связать Файл с Набором Данных} Rewrite (Tx); {Открыть Файл для записи} Writeln (’Введите кол-во строк текста’); Readln(n); {Ввести количество строк} Writeln (’Введите строки’); For i:=1 to n do Begin Readln (Stroka); {Ввод строки с клавиатуры} Writeln(Tx,Stroka); {Запись в файл} End; Close(Tx); {Закрыть файл} End.Пример. Вывод существующего текстового файла
Program VivodFile; Var Tx : Text; FilName,Str : String; KolStr : Integer; Begin Writeln(’Введите имя НД ’); Readln(FilName); {Ввести Имя Набора Данных} Assign(Tx,FilName); {Связать Файл с Набором Данных} Reset(Tx); {Открыть Файл для чтения} KolStr := 0; Writeln(’Содержимое набора’); While Not Eof(Tx) do {Пока не конец файла} Begin Readln (Tx,Str); KolStr := KolStr+1; Writeln(Str); {вывод на экран} End; Writeln(’Кол-во строк - ’, kolstr); Close(Tx); {Закрыть файл} End.Пример. Создание типизированного файла.
Program Sozd_Fil; Const M=5; { Количество оценок } Type Stud=Record Fam,Im,Ot:String[10]; NumZ:LongInt; Otm: Array[1..M] Of Integer; End; Var Vedom : File Of Stud; A : Stud; FilName : String; { имя набора данных } j,i,n : Integer; Begin Writeln(’Введите имя набора данных’); Readln(FilName); Assign(Vedom,FilName); Rewrite(Vedom); {Открытие файла для записи} Writeln(’Введите количество студентов’); Readln(n); Writeln (’Вводите сведения о каждом студенте’); For i:=1 to n do Begin With A do Begin Write(’Фамилия: ’);ReadLn(Fam); Write(’Имя: ’);ReadLn(Im); Write(’Отчество: ’);ReadLn(Ot); Write(’Номер зачетки: ’); ReadLn(Numz); WriteLn(’Введите оценки по одной:’); For J := 1 to 5 do Begin WriteLn(’Введите ’,J,’ -ю оценку’); ReadLn(Otm[j]); End; End; Write(Vedom,A); {Запись в файл переписывается целиком} End; Close(Vedom); Writeln (’Конец работы. Нажмите клавишу ENTER’); ReadLn; End.