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


Открытие и создание файлов


После создания объекта класса CFile можно открыть файл, вызвав метод Open. Методу Open надо указать путь к открываемому файлу и режим его использования. Прототип метода Open имеет следующий вид:

virtual BOOL

Open(LPCTSTR lpszFileName, UINT nOpenFlags,

             CFileException* pError = NULL);

В качестве параметра lpszFileName надо указать имя открываемого файла. Можно указывать только имя файла или полное имя файла, включающее полный путь к нему.

Второй параметр nOpenFlags определяет действие, выполняемое методом Open с файлом, а также атрибуты файла. Ниже представлен список возможных значений параметра nOpenFlags:



Возможные значения nOpenFlags

Описание

CFile::modeCreate

Создается новый файл. Если указанный файл существует, то его содержимое стирается и длина устанавливается равной нулю

CFile::modeNoTruncate

Этот флаг предназначен для использования совместно с флагом CFile::modeCreate. Если создается уже существующий файл, то его содержимое не будет удалено

CFile::modeRead

Файл открывается только для чтения

CFile::modeReadWrite

Файл открывается для чтения и записи

CFile::modeWrite

Файл открывается только для записи

CFile::modeNoInherit

Указывает, что файл не должен наследоваться порожденным процессом

CFile::shareCompat

Открывает файл в режиме совместимости. Любой другой процесс может открыть этот файл несколько раз. Операция вызывает ошибку, если файл уже открыт другим процессом в любом другом режиме кроме режима совместимости

CFile::shareDenyNone

Не запрещается доступ к открываемому файлу ни на чтение, ни на запись. Вызывает ошибку, если файл уже открыт в режиме совместимости любым другим процессом

CFile::shareDenyRead

После того как файл открыт, другим процессам запрещается его чтение. Вызывает ошибку, если уже открыт в режиме совместимости или для чтения другим процессом

CFile::shareDenyWrite

После того как файл открыт, другим процессам запрещается запись в него. Вызывает ошибку, если уже открыт в режиме совместимости или для записи другим процессом

CFile::shareExclusive

После того как файл открыт, другим процессам запрещается запись и чтение из этого файла. Вызывает ошибку, если файл уже открыт для чтения или для записи любым процессом

CFile::typeText

Используется классами, порожденными от класса CFile, например CStdioFile, для работы с файлами в текстовом режиме. Текстовый режим обеспечивает преобразование комбинации символа возврата каретки и символа перевода строки.

CFile::typeBinary

Используется классами, порожденными от класса CFile, например CStdioFile, для работы с файлами в двоичном режиме

Необязательный параметр pError, который является указателем на объект класса CFileException, используется только в том случае, если выполнение операции с файлом вызывает ошибку. Если вы указали параметр pError и случилась ошибка, то в объект будет записана дополнительная информация.

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



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