Otwieranie plików
W MFC najczęstszym sposobem otwierania pliku jest proces dwuetapowy.
Aby otworzyć plik
Utwórz obiekt pliku bez określania ścieżki lub flag uprawnień.
Zazwyczaj tworzy się obiekt pliku, deklarując zmienną CFile na ramce stosu.
Wywołaj funkcję Open member dla obiektu pliku, podając ścieżkę i flagi uprawnień.
Wartość zwracana dla
Open
parametru będzie niezerowa, jeśli plik został pomyślnie otwarty lub 0, jeśli nie można otworzyć określonego pliku. FunkcjaOpen
składowa jest prototypowana w następujący sposób:virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL );
Flagi otwierania określają, które uprawnienia, takie jak tylko do odczytu, mają być przeznaczone dla pliku. Możliwe wartości flagi są definiowane jako wyliczone stałe w
CFile
klasie, więc są one kwalifikowane z wartością "CFile::
", jak w elemCFile::modeRead
. Użyj flagiCFile::modeCreate
, jeśli chcesz utworzyć plik.
W poniższym przykładzie pokazano, jak utworzyć nowy plik z uprawnieniem do odczytu/zapisu (zastępując dowolny poprzedni plik tą samą ścieżką):
TCHAR* pszFileName = _T("c:\\test\\myfile.dat");
CFile myFile;
CFileException fileException;
if ( !myFile.Open( pszFileName, CFile::modeCreate |
CFile::modeReadWrite, &fileException ) )
{
TRACE( _T("Can't open file %s, error = %u\n"),
pszFileName, fileException.m_cause );
}
Uwaga
W tym przykładzie zostanie utworzony i otwarty plik. Jeśli występują problemy, Open
wywołanie może zwrócić CFileException
obiekt w ostatnim parametrze, jak pokazano tutaj. Makro TRACE wyświetla zarówno nazwę pliku, jak i kod wskazujący przyczynę niepowodzenia. Funkcję można wywołać AfxThrowFileException
, jeśli potrzebujesz bardziej szczegółowego raportowania błędów.