Справочник программиста на персональном компьютере фирмы IBM. Дисковые накопители - Создание/удаление подкаталога
ОГЛАВЛЕНИЕ
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
может указывать, что каталог непустой).