Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Func.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.58 Mб
Скачать

CFile::cFile

CFile( );

CFile( int hFile );

CFile( LPCTSTR lpszFileName, UINT nOpenFlags ); throw( CFileException );

Аргументы

  1. hFile — дескриптор уже открытого файла.

  2. lpszFileName — строка, содержащая путь к открываемому файлу. Путь может быть как относительным, так и абсолютным.

  3. nOpenFlags — флаги доступа к файлу. Определяют действия, которые необходимо предпринять при открытии файла. Приведённые ниже флаги могут объединяться оператором побитового ИЛИ (|). Необходимо указать как минимум один флаг доступа и один флаг разделения ресурсов. Флаги modeCreate и modeNoInherit являются не обязательными. В данном аргументе могут быть указаны следующие флаги:

  • CFile::modeCreate — создаётся новый файл. Если файл с данным именем уже существовал, то у него устанавливается нулевая длина.

  • CFile::modeNoTruncate — если файл с данным именем уже существовал, то у него сохраняется прежняя длина. Этот флаг устанавливается совместно с флагом modeCreate. Это позволяет открывать использовать один и тот же конструктор для создания новых файлов и открытия уже существующих. Этот флаг используется при создании объектов класса CStdioFile.

  • CFile::modeRead — открывает файл только для чтения.

  • CFile::modeReadWrite — открывает файл как для чтения, так и для записи.

  • CFile::modeWrite — открывает файл только для записи.

  • CFile::modeNoInherit — запрещает дочернему процессу использовать данный файл.

  • CFile::shareDenyNone — позволяет другому процессу читать и записывать информацию в данный файл. При открытии данного файла возникает ошибка, если он был открыт в режиме совместимости каким-либо другим процессом.

  • CFile::shareDenyRead — не позволяет другому процессу читать информацию из данного файла. При открытии данного файла возникает ошибка, если он был открыт в режиме совместимости или для чтения каким-либо другим процессом.

  • CFile::shareDenyWrite — не позволяет другому процессу записывать информацию в данный файл. При открытии данного файла возникает ошибка, если он был открыт в режиме совместимости или для записи каким-либо другим процессом.

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

  • CFile::shareCompat — этот флаг отсутствует в 32-разрядной библиотеке MFC. Этот флаг соответствует флагу CFile::shareExclusive в функции CFile::Open.

  • CFile::typeText — устанавливает текстовый режим обработки файла в котором предусмотрены специальные процедуры обработки пар символов возврат каретки/перевод строки (используется только в производных классах).

  • CFile::typeBinary — устанавливает двоичный режим обработки файла (используется только в производных классах).

Примечание

Используемый по умолчанию конструктор данного класса (не имеющий аргументов) не открывает файл, а присваивает величине m_hFile значение CFile::hFileNull. Поскольку данный класс не вызывает исключения, нет никакого смысли помещать его в структуры TRY/CATCH. Вместо этого следует использовать функцию Open, непосредственно проверяющую условия возникновения исключений.

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

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

Пример

char* pFileName = "test.dat";

TRY

{

CFile f( pFileName, CFile::modeCreate | CFile::modeWrite );

}

CATCH( CFileException, e )

{

#ifdef _DEBUG

afxDump << "Файл не может быть открыт " << e->m_cause << "\n";

#endif

}

END_CATCH

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]