Страница 9 из 41
5.2.2 Создание/удаление подкаталога. Программа может создавать или удалять подкаталоги, при выпол- нении некоторых условий. Для создания подкаталога необходимо, чтобы было по крайней мере одно пустое место в корневом каталоге. Для удаления подкаталога необходимо, чтобы он не содержал файлов или ссылок на другие подкаталоги. Кроме того, Вы не можете уда- лить подкаталог, который является Вашим текущим каталогом (тот, с которым по умолчанию выполняются все операции над каталогами). Отметим также, что невозможно удалить корневой каталог.
Высокий уровень. Бейсик предоставляет команды MKDIR (создай каталог) и RMDIR (удали каталог). За обеими должны следовать стандартные пути указания каталога, содержащие до 63 символов, включая имя накопи- теля. Путь должен быть заключен в кавычки. Чтобы добавить подка- талог с именем STORKS в подкаталог BIRDS напишите MKDIR "B:MAM- MALS\BIRDS\STORKS". После выполнения этой команды будет создан файл STORKS, используемый как подкаталог и факт его существования будет отражен в создании элемента с именем STORKS в подкаталоге с именем BIRDS. Для удаления этого подкаталога надо сначала удалить из него все файлы [5.3.2]. Затем надо использовать команду RMDIR "B:MAMMALS\BIRDS\STORKS". В этих примерах предполагалось, что Вашим текущим каталогом являлся корневой каталог. Однако, если Ваш текущий каталог нахо- дится где-то на пути к подкаталогу, над которым осуществляются операции, то нет необходимости указывать весь путь. Поэтому, если Вашим текущим каталогом является BIRDS, то для создания или уда- ления подкаталога STORKS можно использовать команды MKDIR "\STORKS" или RMDIR "\STORKS".
Средний уровень. Поскольку управляющие блоки файлов обслуживают только корневой каталог, то для создания или удаления подкаталога надо использо- вать дескрипторы файлов.
Создание подкаталога: DS:DX должны указывать на строку, дающую накопитель и путь к каталогу, в котором должен быть создан подкаталог. Строка должна завершаться байтом ASCII 0. Для открытия подкаталога с именем PRIMATES в корневом каталоге накопителя A: надо записать строку в виде "A:\PRIMATES". Для открытия подкаталога в другом подкаталоге с именем MAMMALS напишите "A:\MAMMALS\PRIMATES". Имя накопителя A: может быть опущено если Вы работаете с накопителем, используе- мым по умолчанию, и путь может начинаться с текущего каталога. Поместите в AH 39H и выполните прерывание 21H; если указан пра- вильный путь, то будет создан новый каталог. В противном случае будет установлен флаг переноса, а AX будет содержать код ошибки 3 (путь неверен) или 5 (нет доступа). В примере создается подката- лог PRIMATES:
;---в сегменте данных PATH DB 'A:MAMMALS\PRIMATES',0
;---создаем подкаталог с именем PRIMATES LEA DX,PATH ;DS:DX должны указывать на путь MOV AH,39H ;номер функции INT 21H ;создаем подкаталог JC ERROR_ROUT ;обработка ошибок
Удаление подкаталога: Для удаления подкаталога надо сформировать строку, в точностью совпадающую с той, которую Вы указывали при создании каталога. Затем поместите в AH 3AH и выполните прерывание 21H. Опять при невыполнении функции в AX будут возвращены коды 3 или 5 (код 5 может указывать, что каталог непустой).
|