Справочник программиста на персональном компьютере фирмы IBM. Дисковые накопители
Страница 15. Подготовка к работе с файлами


     Раздел 3. Подготовка к работе с файлами.


   Программы,  написанные на языках высокого уровня могут  просто
открыть файл и вся подготовительная работа для операций с файлами
будет выполнена автоматически.  Однако программисты на языке  ас-
семблера должны создать  специальные  области данных, которые ис-
пользуются  при  операциях ввода/вывода.  MS DOS  использует  два
метода доступа к файлам, метод  управляющего  блока файла (FCB) и
метод дескриптора файла. Метод FCB сохранился с тех пор, когда MS
DOS не работала с древовидной структурой каталогов, поэтому с его
помощью  можно  получить доступ только к  файлам,  находящимся  в
текущем  каталоге.  Метод  дескриптора  файла  позволяет получить
доступ к любому файлу, независимо от того, какой каталог является
текущим.
   Поскольку теперь  древовидная  структура  каталогов широко ис-
пользуется,  то метод FCB становится анахронизмом, однако MS  DOS
продолжает поддерживать этот метод, чтобы сохранить совместимость
со  старым программным обеспечением и по этой причине мы рассмот-
рим и его.  Однако в  своих  программах  всегда используйте метод
дескриптора файла.  Метод дескриптора файла имеет  дополнительное
преимущество в том, что он  требует меньше подготовительной рабо-
ты. Однако в некоторых приложениях сами операции ввода/вывода при
его использовании  могут  оказаться  более сложными, чем в методе
FCB.  Например, операции чтения файла с прямым доступом с исполь-
зованием метода дескриптора файла  требуют чтобы программа вычис-
ляла смещение каждой записи в файле, в то время как соответствую-
щая функция FCB получает номер записи и делает необходимые вычис-
ления сама.
   Прежде  чем читать или писать данные файл должен быть  открыт.
Открыть файл это значит создать  и  инициализировать  специальную
область  данных,  используемую MS DOS,  которая  содержит  важную
информацию о файле, такую как  имя  файла, имя накопителя, размер
записи  файла  и т.д.  Языки высокого уровня, такие капк  Бейсик,
создают эти области  автоматически.  Одной  из таких областей яв-
ляется управляющий блок файла и когда используется метод FCB,  то
программа создает этот блок, а  MS  DOS читает и манипулирует его
содержимым.   Первоначально  FCB содержит только имя файла и  имя
накопителя; после того как файл  открывается  в  него добавляется
информация о размере записи файла и о текущей позиции, с  которой
к нему будет осуществляться доступ.
   С другой стороны, при доступе  с  помощью дескриптора файла MS
DOS автоматически создает область данных для файла в произвольном
месте. Затем MS DOS создает уникальный 16-битный код номера файла
и впоследствии этот "номер" используется функциями DOS для  иден-
тификации того, с каким из открытых файлов производится операция.
Все что нужно для нахождения файла - это стандартная строка пути,
в которой может быть необязательное имя накопителя и имена подка-
талогов должны быть разделены обратной  косой чертой.  Эти строки
отличаются  от  стандартного запроса MS DOS только тем,  что  они
должны завершаться байтом ASCII  0,  с  тем чтобы программа могла
найти конец строки (такие строки называются строками ASCIIZ).
   Операции по пересылке данных из или в файл требуют, чтобы была
указана область памяти в которую или из которой будут направлять-
ся данные. Такой буфер определяется отведением ему места в памяти

и установкой указателя на его первый  байт (т.е. на младший адрес
буфера  в памяти).  Если передано слишком много данных, то  буфер
переполняется и может разрушить данные, расположенные в следующих
адресах  памяти.   Буфер может использоваться  как  промежуточный
буфер, работающий только с небольшой  порцией данных для операций
чтения или записи. Или буфер может помещаться в область памяти, в
которой программа действительно хранит и обрабатывает данные.
   Функции доступа через управляющий блок файла определяют проме-
жуточный  буфер с помощью указателя, которой все  время  хранится
операционной системой.  Этот  буфер  называется  область обмена с
диском  (disk  transfer area) или DTA.  К сожалению,  техническая
документация по IBM PC часто  называет  термином DTA указатель на
буфер,  хотя  на самом деле правильно называть его указателем  на
DTA.  После того как указатель  на  DTA установлен с помощью спе-
циальной функции, все файловые операции используют его до тех пор
пока он не будет изменен. С другой стороны, функции, использующие
дескриптор файла, должны указывать стартовый адрес буфера  обмена
каждый раз при вызове функции и  они игнорируют указатель на DTA,
используемый  функциями  управляющего блока файла.   Рисунок  5-2
показывает два метода доступа к файлам.

 
« Предыдущая статья   Следующая статья »