Средства работы с файлами DOS
10.4. Средства работы с файлами DOS
10.4.1. Два метода ввода-вывода
В предыдущем примере мы поставили себе искусственное ограничение - использовать для работы с файлом только средства BIOS. В реальной работе программист, конечно же не связан такими ограничениями, в его распоряжении имеется богатый набор средств работы с файлами, каталогами и дисками, обеспечиваемых DOS.
В DOS имеются два совершенно независимых метода работы с файлами: метод Управляющих Блоков Файлов (FCB - File Control Block) и метод файловых дескрипторов (Handle - переводится также как файловые описатель, файловое число, файловый индекс). Первый метод остался "по наследству" от старых версий DOS и далее - от CP/M. Второй метод, впервые реализованный в DOS 2.0, является предпочтительным в новых разработках, поэтому описание начнем с него.
При использовании метода файловых дескрипторов программист в операциях, связанных с открытием файла, задает ASCIIZ -строку, содержащую имя файла (если файл находится не в текущем каталоге, строка содержит и полный путь). При успешном открытии файла функция возвращает программисту файловый дескриптор (целое число) который является идентификатором открытого файла во всех других операциях с файлом. Метод файловых дескрипторов отличает простота использования, возможность работы с файлами, находящимися не в текущем каталоге, единообразие при работе с дисковыми файлами и файлами - символьными устройствами. Первые 5 значений дескрипторов связаны со всегда открытыми системными файлами-устройствами:
0 | - стандартный файл ввода (обычно - клавиатура); |
1 | - стандартный файл вывода (обычно - экран); |
2 | - стандартный файл вывода сообщений об ошибках (всегда - экран); |
3 | - стандартный файл AUX (асинхронный порт); |
4 | - стандартный файл печати (1-й параллельный принтер). |
Используя эти файловые дескрипторы, программист может обращаться к указанным устройствам, как к открытым дисковым файлам.
При использовании метода FCB программист должен построить в памяти блок FCB, формат которого описывается следующей структурой: