Краткие теоретические сведения. Данные на внешних носителях принято организовывать в виде файлов

Данные на внешних носителях принято организовывать в виде файлов.

Файл — упорядоченный набор данных, пригодный для использования прикладными программами. Удобно представлять файл как совокупность данных (используются прикладными программами) и метаданных (данные о размещении данных, используются системными программами).

Для организации хранения данных, предоставления доступа к ним и обеспечения другого сервиса служит файловая система (ФС). В это понятие входят как структуры для собственно хранения данных и метаданных, так и включенные в ПО средства работы с ними.

Типичной для файловых систем является иерархическое (древовидное) построение: файлы могут объединяются в каталоги (директорий — directory, папка — folder), причем сами каталоги также могут быть вложенными. Таким образом, каталог также файла, но специального вида — предназначенным для хранения информации о включенных в него файлах и других каталогах.

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

Файлы принято идентифицировать их именами. Учитывая наличие каталогов и подкаталогов, для однозначной локализации файла требуется также и путь к нему (path) — перечисление всей цепочки каталогов.

Для ФС Microsoft характерна отдельная иерархия каталогов для каждого логического диска. Логический диск может соответствовать физическому накопителю или одному из его разделов, реже — виртуальному устройству. С точки зрения системы каждый логический диск рассматривается как самостоятельное устройство и идентифицируется буквой: A, B, C и т.д.

Таким образом, полный (абсолютный) путь к файлу будет начинаться от «буквы» логического диска, например: A:\directory1\directory2\...\file.ext. Относительный путь начинается от текущего каталога в файловой системе.

Традиционными для MS-DOS и ранних версий Windows были файловые системы FAT (более подробно см. описание следующей лабораторной работы). Первоначально имена ограничивались 8 символами собственно «имени» и 3 символами «расширения» (extention), причем набор символов ограничивался латинскими буквами, цифрами и некоторыми дополнительными символами: +, –, _ и т.д. Позже в именах были допущены символы национальных алфавитов, а затем введены и «длинные» имена, причем уже с использованием Unicode. Пределом длины «длинного» имени указывается 255 символов, а имени вместе с путём — 260 символов.

Традиционные имена «8.3» содержат буквы только в верхнем регистре, и приведение их выполняется автоматически, поэтому для пользователя имена не чувствительны к регистру букв. «Длинные» имена хранятся с учётом регистра букв, однако их сравнения всё равно регистронечувствительны. Поэтому имена будут соответствовать своим файлам независимо от регистра букв в них, а в одном каталоге не могут быть два файла, имена которых различаются только регистром букв.

Для доступа к файлу он должен быть предварительно открыт, все последующие действия будут выполняться над системным объектом «откры­тый файл». Первоначально в MS-DOS применялись FCB (File Control Block) — структуры, содержащие информацию о файле и выполняемой над ним операции, в ту же структуру могли заноситься и результаты операции. Позже был введен более удобный подход, основанный на использовании файловых дескрипторов (file descriptor). Дескриптор представляет собой целое число, получаемое после открытия или создания файла и однозначно идентифициру­ющее его. Полученный дескриптор действует до закрытия файла. Вся слу­жебная информация об объекте остается скрытой от прикладной программы, что упрощает работу. В результате FCB-ориентированные функции признаются устаревшими и поддерживаются в основном для совместимости с ранее написанным ПО, а основным методом доступа в современных ОС является дескрипторный.

Сервис MS-DOS для работы с файлами представлен рядом функций прерывания 21h. Ниже перечислены некоторые из них (дескрипторный доступ).

AH=3Ch — создание файла с усечением содержимого;

AH=3Dh —открытие существующего файла;

AH=5Bh — создание файла (если не существует) или открытие;

AX=6C00h — создание или открытие файла с выбором поведения функции с посредством дополнительных флагов;

AX=716Ch — то же с поддержкой длинных имён;

AH=42h — позиционирование в файле;

AH=3Fh — чтение из файла в буфер в памяти;

AH=40h — запись данных из буфера в файл;

AH=3Eh — закрытие файла.

Имеются также функции, работающие с объектами файловой системы, без открытия файлов. Некоторые из них перечислены ниже.

AH=43h — получение или установка атрибутов файла (имеет подфункции);

AH=56h — переименование файла;

AX=7156h — переименование с поддержкой длинных имён;

AH=57h — получение или установка даты и времени для файла;

AH=41h — удаление файла;

AH=39h и 3Ah — создание и удаление каталога;

AX=7139h и 713Ah — то же с поддержкой длинных имён;

AH=47h и 3Bh — получение и установка текущего каталога;

AX=7147h и 713Bh — то же с поддержкой длинных имён;

AH=4Eh и 4Fh — поиск (начало и продолжение поиска) файла по шаблону, результат возвращается в области DTA;

AX=714Eh и 714Fh — поиск с поддержкой длинных имён;

Контрольные вопросы

1) Хранение файлов и организация доступа к ним.

2) Способы доступа к файлам.

3) Атрибуты файлов.

4) Функции MS-DOS для работы с файлами.

5) Открытие и закрытие файлов.

6) Чтение данных из файла.

7) Запись данных в файл.

8) Поиск файла.

9) Создание файлов.

10) Переименование файлов.

11) Удаление файлов.

Варианты заданий

1. С клавиатуры вводятся имя исходного файла и имя файла для хранения результата. Необходимо при помощи функции поиска файлов убедиться в существовании исходного файла и отсутствии результирующего. Если исход­ный файл отсутствует, выдается предупреждение, и выполнение останав­лива­ется. Если результирующий файл уже присутствует, выдается предупреж­дение, и прежнее содержимое файла перекрывается.

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

2. С клавиатуры вводятся первые символы имени файла (например, myfile) и имя файла результата. Необходимо найти все файлы, начинающиеся с данных символов (myfile.txt, myfile1.doc, myfile005.txt, …), по очереди открыть эти файлы и склеить их содержимое в результирующем файле, читая блоками по 256 байт.

3. С клавиатуры вводится расширение имени для поиска файлов (например, txt) и имя файла результата. Необходимо найти все файлы с этим расширением и сохранить их имена в результирующем файле. В случае, если файл для хранения результата уже существует, его старое содержимое должно быть сохранено, а новые записи надо добавлять в конец файла.

4 (повышенной сложности). Репозиторий имен файлов и директориев.

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

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

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

Данное задание требует знакомства со средствами управления памятью.

Лабораторная работа 2:
Файловая система FAT


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



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