- •Работа с файловой системой
- •Содержание
- •1. Цель работы
- •2. Порядок выполнения работы
- •3. Структура каталогов файловых систем fat и vfat
- •Структура элемента каталога fat в Windows
- •Структура элемента каталога с длинным именем
- •4. Работа с файловой системой
- •4.1. Создание, открытие, чтение и запись в файл
- •4.2. Поиск файлов в dos
- •4.3. Поиск файлов в Windows
- •4.4. Опрос и изменение свойств файлов
- •4.4.1. Атрибуты
- •4.4.2. Дата и время последней модификации
- •4.5. Перемещение и удаление файлов
- •4.6. Работа с каталогами
- •5. Работа с параметрами командной строки
- •6. Пример
- •Текст программы
- •Библиографический список
- •Поиск файлов по дереву каталогов
- •Варианты заданий
4.4. Опрос и изменение свойств файлов
В параграфе описаны функции для получения атрибутов файлов и каталогов, размера и даты модификации файлов, а также способы изменения этих параметров.
4.4.1. Атрибуты
Получить атрибуты файла/каталога DOS
Вход: AX = 4300h
DS:DX = адрес ASCIIZ строки с именем файла.
Выход: CF=0, если ошибок нет; атрибуты в CX
CF=1 – ошибка, код в AX (02h – файл не найден, 03h – путь не найден)
Изменить атрибуты файла DOS
Вход: AX = 4301h
DS:DX = адрес ASCIIZ строки с именем файла
CX = новые атрибуты
Выход: CF=0, если операция выполнена успешно;
CF=1 – ошибка, код в AX (02h – файл не найден,
03h – путь не найден, 05h – доступ запрещен,
0Ch – неверный режим доступа)
Получить/установить атрибуты файла/каталога с длинным именем
Функция не позволяет менять атрибуты каталогов.
Вход: AX = 7143h
DS:DX = адрес ASCIIZ строки с именем файла
BX = действие (0 – получить атрибуты, 1 – установить)
CX = новые атрибуты (для функции установки атрибутов)
Выход: CF=0, если ошибок нет, атрибуты в CX;
CF=1 – ошибка, код в AX (02h – файл не найден, 03h – путь не найден, 05h – доступ запрещен)
4.4.2. Дата и время последней модификации
Получить дату/время последней модификации файла
Вход: AX = 5700h
BX = файловый манипулятор
Выход: CF=0 – ошибок нет, в CX время, в DX – дата в формате DOS (см. табл.1)
CF=1 – ошибка, код ошибки в AX (06h – неверный файловый манипулятор).
Установить дату/время последней модификации файла
Вход: AX = 5701h
BX = файловый манипулятор
CX = время в формате DOS (см. табл.1)
DX = дата в формате DOS (см. табл.1)
Выход: CF=0 – ошибок нет;
CF=1 – ошибка, код в AX (06h – неверный файловый манипулятор)
Эта функция корректно меняет время файла, открытого для чтения. У файла, в который записывали, дата и время модификации устанавливается при его закрытии.
4.5. Перемещение и удаление файлов
В DOS функции перемещения и удаления работают с одним файлом. Для удаления группы файлов приходится вызывать операцию для каждого файла индивидуально. Функция LFN удаления способна обрабатывать за раз группу файлов, заданную по маске и атрибутам.
Переименовать/переместить файл или каталог
Вход: AH = 56h
DS:DX = адрес ASCIIZ строки со старым именем
ES:DI = адрес ASCIIZ строки с новым именем
Выход: CF=0, если операция выполнена успешно;
CF=1 – ошибка, код в AX (02h – файл не найден,
03h – путь не найден, 05h – доступ запрещен,
0Ch – неверный режим доступа, 10h – попытка переместить текущий каталог)
Переименовать/переместить файл(ы) с длинным именем
Вход: AX = 7156h
DS:DX = адрес ASCIIZ строки со старым именем файла
ES:DI = адрес ASCIIZ строки с новым именем
Выход: CF=0, если файл удален
CF=1 – ошибка, код в AX (02h – файл не найден,
03h – путь не найден, 05h – доступ запрещен,
0Ch – неверный режим доступа, 10h – попытка переместить текущий каталог)
Перемещение объектов между разными дисками выполняется не через функцию 56h, а в два этапа: сначала копировать, затем удалить оригинал.
Удалить файл DOS
Вход: AH = 41h
DS:DX = адрес ASCIIZ строки с именем файла (в имени не должно быть символов «*» и «?»)
Выход: CF=0, если файл удален
CF=1 – ошибка, код в AX (02h – файл не найден,
03h – путь не найден, 05h – доступ запрещен)
Функция не удаляет файлы с атрибутом readonly, возвращая ошибку с кодом 05h (доступ запрещен).
Удалить файл(ы) с длинным именем
Вход: AX = 7141h
DS:DX = адрес ASCIIZ строки с именем файла (имя может содержать символы «*» и «?»)
CL = атрибуты, которые файлы могут иметь
CH = атрибуты, которые файлы должны иметь
SI = разрешение масок и атрибутов (0 – маски запрещены, атрибуты игнорируются, удаляется единственный файл;
1 – удаляется группа файлов по маске и атрибутам в CX)
Выход: CF=0, если файл удален
CF=1 – ошибка, код в AX (02h – файл не найден,
03h – путь не найден, 05h – доступ запрещен)
Функция удаляет все файлы, даже с атрибутом readonly.