2.2. Класс cStdioFile
Класс CStdioFile наследован от класса CFile. Для чтения и записи в текстовый файл класс CStdioFile включает два новых метода: ReadString() и WriteString().
Синтаксис записи этих операторов следующий:
LPTSTR ReadString(LPTSTR str);
void WriteString(LPCTSTR str);
Первый метод позволяет прочитать из файла строку символов str, а второй метод – записать строку символов str в файл. Методы должны быть вызваны у объекта класса CStdioFile, с которым с помощью функции Open() должен быть связан конкретный физический файл.
Пример записи в файл.
CString Text = "string\nstring\nstring";
CStdioFile File("data.txt",CFile::modeCreate|CFile::modeWrite);
File.WriteString(Text);
File.Close();
Пример чтения из файла.
CStdioFile File(DlgOpen.GetPathName(),CFile::modeRead);
if (File!=NULL)
{CString s;
for (int i=0;i<5;i++)
{File.ReadString(s);
m_str+=s;
m_str+=CString("\r\n");
}
UpdateData(0); //вывод данных из переменной m_str в EditBox
}
else
AfxMessageBox("Ошибка открытия файла");
2.3. Класс cFileDialog для выбора файла.
Этот класс позволяет осуществлять выбор файла с помощью специальных диалогов, широко используемых в большинстве программных продуктов и для отображения файловой структуры каталогов дисковых накопителей информации.
Описание параметров, задаваемых при объявлении объекта класса CFileDialog:
CFileDialog (BOOL Dlg, LPCTSTR DefExt=NULL, LPCTSTR FileName = NULL, DWORD Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR Filter = NULL);
Параметры:
Dlg–TRUE, для создания диалога открытия файла с заголовком «Открыть», илиFALSEдля конструирования диалога сохранения файлов с заголовком «Сохранить как»;
DefExt– расширение файла по умолчанию. Если этот параметр принимает значениеNULL, то расширение к введенному пользователем имени файла не будет добавлено автоматически;
FileName– имя файла по умолчанию, которое будет помещено в поле набора имени файла. Если этот параметр имеет значениеNULL, то поле для ввода имени файла будет пустым при загрузке окна выбора файла;
Flags– комбинация одного или более флагов, которые позволяют изменить содержание конструируемого диалога открытия или сохранения файлов:
OFN_HIDEREADONLY– запрещает отображение файлов с атрибутом «только для чтения»;
OFN_OVERWRITEPROMPT– обеспечивает появление подсказки с вопросом о необходимости перезаписи файла, если файл с указанным пользователем именем уже существует в выбранной директории;
Filter– серия из пар строк, которая определяет фильтры для выбора разных типов файлов, отображаемых в диалоге.
Пример использования объекта класса CFileDialog.
char Filter []= "TextFile (*.txt),(*.doc) | *.txt; *.doc | All (*.*) | *.*||";
//определили фильтр для открытия файлов
CFileDialog fd(TRUE, ".txt", "ReadMe", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, Filter);
// объявление объекта класса CFileDialog для открытия файла
fd.DoModal();
// инициализация вызова диалога открытия файла
CFile f (fd.GetPathName(), CFile::modeWrite | CFile::modeCreate );
// открытие файла, выбранного пользователем, на запись
UpdateData(1);
// обмен данными между элементами EditBox и связанными с ними переменными
f.Write(m_1,m_1.GetLength() );// запись в файл
f.Close();// закрытие файла