Операции с файлами
В состав класса CFile входят методы, позволяющие выполнять над файлами различные операции, например копирование, переименование, удаление, изменение атрибутов.
Операционная система MS-DOS содержит команду REN, позволяющую переименовывать файлы. Класс CFile включает статический метод Rename, выполняющий функции этой команды:
static void PASCAL
Rename(LPCTSTR lpszOldName, LPCTSTR lpszNewName);
throw(CFileException);
Метод Rename изменяет имя файла, определенного параметром lpszOldName на lpszNewName. Метод нельзя использовать для переименования каталогов. В случае возникновения ошибки метод вызывает исключение.
Для удаления файлов предназначена команда DEL операционной системы MS-DOS. Класс CFile включает статический метод Remove, позволяющий удалить указанный файл:
static void PASCAL Remove(LPCTSTR lpszFileName);
throw(CFileException);
Параметр lpszFileName должен содержать путь удаляемого файла. Метод Remove не позволяет удалять каталоги. Если удалить файл невозможно, например, из-за неправильно указанного имени файла, то метод вызывает исключение.
Чтобы определить дату и время создания файла, его длину и атрибуты, предназначен статический метод GetStatus. Существует две разновидности метода - первый определен как виртуальный, а второй - как статический методы.
Виртуальная версия метода GetStatus определяет состояние открытого файла, связанного с данным объектом класса CFile. Вызывайте этот метод только тогда, когда объект класса CFile создан и файл открыт:
BOOL GetStatus(CFileStatus& rStatus) const;
Статическая версия метода GetStatus позволяет определить характеристики файла, не связанного с объектом класса CFile. Чтобы воспользоваться этим методом, не обязательно предварительно открывать файл.
static BOOL PASCAL
GetStatus(LPCTSTR lpszFileName, CFileStatus& rStatus);
Параметр lpszFileName должен содержать путь к файлу. Путь может быть полным или не полным - относительно текущего каталога.
Параметр rStatus должен содержать указатель на структуру типа CFileStatus, в которую заносится информация о файле.
Структура типа CFileStatus имеет элементы, описанные в следующей таблице:
Поле структуры CFileStatus |
Описание |
CTime m_ctime |
Дата и время создания файла. Описание класса CTime представлено нами в главе “Дата и время” |
CTime m_mtime |
Дата и время последней модификации файла |
CTime m_atime |
Дата и время, когда последний раз выполнялось чтение из файла |
LONG m_size |
Размер файла в байтах |
BYTE m_attribute |
Атрибуты файла |
char m_szFullName[_MAX_PATH] |
Полное имя файла в стандарте операционной системы Windows. Виртуальная версия метода не заполняет это поле |
enum Attribute {
normal = 0x00,
readOnly = 0x01,
hidden = 0x02,
system = 0x04,
volume = 0x08,
directory = 0x10,
archive = 0x20
};
Атрибут |
Описание |
normal |
Нормальный файл |
readOnly |
Файл, который можно открыть только для чтения |
hidden |
Скрытый файл |
system |
Системный файл |
volume |
Метка тома |
directory |
Каталог |
archive |
Архивный |