Шаг 132 - Знакомимся CStdioFile

Еще один класс порожденный от CFile. Этот класс позволяет пользоваться стандартными стредствами C,C++ для ввода/вывода. При использовании этого класса важно понятие открытия и закрытия файла, как и при обычном открытии файла в C в отличии от расмотренного ранее CMemFile.

Давайте создадим приложение AppWizard на основе диалогового окна и поставим кнопку с кодом. Как делали в прошлые разы.

void CTestStdioDlg::OnButton1() 
{
 CStdioFile File("c:\\windows\\Wordpad.ini",CFile::modeRead);
 CString str;
 File.ReadString(str);
 AfxMessageBox(str);
 File.Close();  
}
Любой класс начинается с конструктора. Вот какие конструкторы у этого класса.
CStdioFile( );
CStdioFile( FILE* pOpenStream );
CStdioFile( LPCTSTR lpszFileName, UINT nOpenFlags );
throw( CFileException );
При укзании имени файла производится его открытие. Открытие может быть в текстовом и бинарном формате. Текстовый режим реализует стандартную обработку возврата коретки при чтении данных. Конец строки работает интересно. Вот так.
  Посылаем конец стоки 0хА в файл пишется 0хА 0хD
  Читаем из файла конец строки 0хА 0хD, читается из файла 0хA 
Как видно из конструктора при невозможности операции с файлом появится исключение. Сделайте вот так.
void CTestStdioDlg::OnButton1() 
{
 CStdioFile File("c:\\windows\\NotFile.not",CFile::modeRead);
 CString str;
 File.ReadString(str);
 AfxMessageBox(str);
 File.Close();  
}
И вы получите исключение такого вида.

132.gif (2611 b)

красивое сообщение, но его неполохо бы обработать хоть просто, вот например так хотя и не совсем корректно, потому что будут отлавливаться все типы исключений.

void CTestStdioDlg::OnButton1() 
{
	try
	{
		CStdioFile File("c:\\windows\\NotFile.not",CFile::modeRead);
		CString str;
		File.ReadString(str);
		AfxMessageBox(str);
		File.Close(); 
	}
	catch(...)
	{
		AfxMessageBox("Error Open");
	}
}

К классу CFile есть ряд дополнительных функций:

ReadString    читает строку текста
WriteString   записывает строку текста

И указатель на открытый файл:

m_pStream 

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 6.03.2000