|
Лабораторная работа №2
Работа с файлами.
Цель: изучить работу с файлами на двух языках программирования: Visual C++ 6.0 и Visual C#
Теоретические сведения:
Класс CFile является основным классом, используемым для записи в файл или считывания из него. Он использует некоторые производные классы для считывания данных и их записи в файлы конкретных типов, иногда даже не являющиеся файлами как таковыми. Для выполнения операций записи и считывания не обязательно использовать класс CArchive, обеспечивающий преобразование в последовательную форму. Можно напрямую использовать класс CFile, производя запись и считывание данных в необходимом формате.
Открытие файла:
можно открывать при создании экземпляра класса CFile, где необходимо объявить указатель на экземпляр класса CFile, затем вызвать конструктор CFile с такими параметрами:
CFile *pComFile = new CFile(strFile, CFile::modeRead);
или
применить к файлу преобразование в последовательную форму (не используется указатель):
CFile fComFile (strFile, CFile::modeRead);
Флажки, используемые при открытии файла.
Флажок |
Описание |
CFile::modeСreate |
Создает новый файл. Если файл с указанным именем уже существует, его содержимое стирается. |
CFile::modeRead |
Файл открывается только в режиме чтения |
CFile::modeReadWrite |
Файл открывается как в режиме чтения, так и в режиме записи. |
CFile::modeWrite |
Файл открывается как в режиме записи. |
CFile::typeText |
Файл открывается в текстовом режиме и т.д. |
Для выполнения операций чтения из открытых файлов и записи в них можно использовать функции Read и Write.
Функция Read имеет следующий синтаксис:
UINT Read (void IpBuf, UINT iCount);
где IpBuf – указатель на буфер, в который считываются данные из файла; iCount – размер буфера.
Функция Write имеет следующий синтаксис:
void Write (const void* IpBuf, UINT iCount);
где первый параметр – указатель на буфер, содержащий данные, которые необходимо записать в файл; второй параметр определяет количество данных, которые следует записать из буфера в файл.
Создавался экземпляр класса СArchive со следующим способом создания: CArchive (CFile* pFile, UINTiMode, intiBufSize, void *pBuf).
- pFile указатель на объект класса СFile;
- iMode определение режима как будет использоваться создаваемый экземпляр: CArchive::load(загрузка)- чтение из файла, CArchive::store –запись в файл;
- iBuffsize – размер используемого буфера(необязательный параметр);
- pBuf – указатель на дополнительный буфер (необязательный параметр).
Большое преимущество класса CArchive перед классом CFile то что к методам чтения и записи относятся методы:
VoidWriteString(LPCTSTRstrText) – записывает в файл строку.
BOOL ReadString(CStringstrText) – считывает из файла строку в strText, если считывание прошло успешно то возвращается TRUE, если конец файла возвращается FALSE.
Если при работе с компонентами класса CFile возникает ошибка, вызывается исключение CFileException.
Класс CFileException имеет несколько членов, с помощью которых можно определить причину возникновения исключения.
Возможные значения причины ошибок.
Флажок |
Описание |
CFileException::none |
Нет ошибок. |
CFileException::fileNotFound |
Файл не найден. |
CFileException::badPath |
Указанный путь к файлу неверен. |
CFileException::accessDenied |
Нет доступа к файлу. |
CFileException::hardIO |
Аппаратная ошибка и т.д. |
Теоретические сведения о работе с файлами в VisualC#:
Для открытия файла я использовал объект StreamReadr.
StreamReader file = new StreamReader((System.IO.Stream)File.OpenRead("1.txt"),System.Text.Encoding.Default, true, 512);
В качестве параметров указывается:
- путь к файлу;
- тип кодировки текста в файле (Default, ASCII,UTF8,UTF7);
- размер буфера;
Для считывания из файла используется метод объекта StreamReadrReadLine(). Этот медод считывает из файла одну строку по аналогии с методом ReadString() класса Carchive
Приложение на Visual C++ 6.0
Приложение на С.#
Список литературы:
1. Дэвис Чепмен “Освой самостоятельно. Visual C++.NET за 21 день” - Издательский дом «Вильямс» Москва * Санкт-Петербург * Киев. 2002г.
2. Кэйт Грегори “Использование Visual C++ 6.0” - Издательский дом «Вильямс» Москва * Санкт-Петербург * Киев. 2002г.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.