Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT

         

Операции с файлами


В состав класса 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. Виртуальная версия метода не заполняет это поле

Атрибуты файла, указанные в поле m_attribute структуры CFileStatus, определяются как переменная перечислимого типа Attribute. Этот тип определен в классе CFile следующим образом:

enum Attribute {

      normal =    0x00,

      readOnly =  0x01,

      hidden =    0x02,

      system =    0x04,

      volume =    0x08,

      directory = 0x10,

      archive =   0x20

};

Атрибут

Описание

normal

Нормальный файл

readOnly

Файл, который можно открыть только для чтения

hidden

Скрытый файл

system

Системный файл

volume

Метка тома

directory

Каталог

archive

Архивный

Метод GetStatus возвращает ненулевое значение при нормальном завершении и нуль в случае ошибки. Ошибка обычно возникает, если вы указываете несуществующий файл.


Содержание раздела