Opening Files
In MFC, the most common way to open a file is a two-stage process.
To open a file
Create the file object without specifying a path or permission flags.
You usually create a file object by declaring a CFile variable on the stack frame.
Call the Open member function for the file object, supplying a path and permission flags.
The return value for Open will be nonzero if the file was opened successfully or 0 if the specified file could not be opened. The Open member function is prototyped as follows:
virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL );
The open flags specify which permissions, such as read-only, you want for the file. The possible flag values are defined as enumerated constants within the CFile class, so they are qualified with “CFile::,” as in CFile::modeRead. Use the CFile::modeCreate flag if you want to create the file.
The following example shows how to create a new file with read/write permission (replacing any previous file with the same path):
char* pszFileName = "c:\\test\\myfile.dat";
CFile myFile;
CFileException fileException;
if ( !myFile.Open( pszFileName, CFile::modeCreate |
CFile::modeReadWrite ), &fileException )
{
TRACE( "Can't open file %s, error = %u\n",
pszFileName, fileException.m_cause );
}
Note This example creates and opens a file. If there are problems, the Open call can return a CFileException object in its last parameter, as shown here. The TRACE macro prints both the file name and a code indicating the reason for failure. You can call the AfxThrowFileException function if you require more detailed error reporting.