Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ПА и ПО (с пояснениями).doc
Скачиваний:
10
Добавлен:
23.09.2019
Размер:
851.97 Кб
Скачать

2.4.4. Операции над файлами

Физическая организация файла и метод доступа к нему обычно известны программисту но без излишней детализации.

Несмотря на всё многообразие языков программирования, в них реализуется некоторое общее множество файловых операций:

  1. Открытее файла: выполнение этой операции предполагает набор вспомогательных действий, подготавливающих файл к использованию:

  1. Поиск файла на носителе.

  2. Образование системных буферов для обмена данными с файлом.

  3. Инициализация и установка указателя текущей позиции (обычно установка на начало файла).

  4. Чтение первого блока в буфер.

  1. Чтение, запись: выполняется отображение логических номеров блоков в физические.

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

  3. Закрытие файла: Выполнение вспомогательных действий, обратных по смыслу действиям, выполняемым при открытии файла.

При выполнении всех перечисленных операций программист имеет дело с логическим представлением файла.

В конкретном языке можно выделить 2 уровня файловой системы:

1. физический файл – описывается символьной строкой (полное имя файла)

2. логический файл – описывается переменной файлового типа.

Двоякое представление файла:

Рассмотрим набор файловых операций для Pascal:

Операции с файлами можно разбить на 4 группы:

  1. установочные и завершающие операции

  2. операции ввода-вывода

  3. операции перемещения по файлу (позиционирования указателя)

  4. специальные операции

1. Установочные и завершающие операции: 5 операций, которые реализуются соответствующими процедурами.

Замечание: Все файловые операции в Pascal реализуются стандартными процедурами и функциями, но не операторами. Такой подход принят в большинстве современных языков: ядро языка не включает поддержку файловых операций (т.к. они сильно привязаны к ОС).

а) Процедура, связывающая файловую переменную с физическим файлом (но не открывает файл): Assign (F,имя_физического_файла);

б) Reset (F) - Открытие файла

в) Rewrite (F) - Открытие файла

Операция Reset применима только к существующему файлу, она открывает его. Если она применяется к уже открытому файлу, то она устанавливает указатель на начало. Если применяется к несуществующему файлу – сообщение об ошибке, которая обрабатывается на уровне ядра языка или прикладной программы.

Revrite открывает новый (несуществующий) файл, т.е. позволяет создать файл на носителе и устанавливает указатель на начало.

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

Если процедура Rewrite, применена к существующему файлу, то содержимое файла удаляется (его длина становится=0).

г) Функция Flush (F); опорожняет буфер и выводит содержащиеся там данные на устройство. Пример применения: вывод данных на принтер ‘LPT:’- в качестве выходного физическогофайла.

д) Операция Close (F); закрывает файл (освобождает логическую файловую переменную).

2.Операции ввода-вывода: (2 операции)

Write (F,p1,p2,…);

Read (F,p1,p2,…);

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

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

Если F не указано, то по умолчанию:

Write (output(default),p1,p2,…);

read (input(default),p1,p2,…);

Совместно с процедурами write и read можно использоваться логическая функция EOF (F); - позволяет определить конец файла.

3. Перемещение по файлу (позиционирование указателя) – 2 процедуры:

Seek (F,p); - позволяет установить указатель в файле на нужную позицию, р – номер позиции в файле.

Truncate(F); - объявляет текущую позицию указателя последней (концом файла), т.е.отсекает часть файла от текущей позиции до конца.

Ф-ция b=FilePos(F); - позволяет узнать текущую позицию указателя. (b типа boolean)

S=FileSize(F); - возвращает размер файла в элементах.