Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к экзамену ВизСр.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
242.18 Кб
Скачать
  1. Выполнение стандартных файловых операций с помощью класса cFile.

Когда в программе отсутствует обьект типа документ, на который можно возложить файловые

операции, как например, в программе на базе диалоговых окон, приходится работать с классом MFC

CFile.Он обладает возможностями, необходимыми при работе с файлами как для записи данных на диск,

так и для их последующего учения.Эти возможности реализуются следующими методами:

Abort-закрывает файл, игнорируя любые предупреждения и ошибки;

CFile –конструирует обьект класса CFile по заданному пути или файловому логическому номеру;

Close-закрывает файл и удаляет обьект;

Flush-выполняет отложенную запись всех данных;

Get File Name-возвращает имя заданного файла;

Get File Path-возвращает полный файловый путь заданного файла;

Get File Title-возвращает короткое имя заданного файла;

Get Length-возвращает длину файла;

Get Position-возвращает текущую позицию файлового указателя;

Get Status-возвращает сведения о статусе заданного файла;

Get Status-возвращает сведения о статусе открытого файла;

Lock Range-блокирует диапазон байтов в файле;

Open-производит безопасное открытие файла с возможностью проверки ошибок;

Read-читает данные из файла,начиная с текущей позиции;

Read Huge-читает данные из файла длной более 64К;

Remove-удаляет заданный файл;

Rename-переименовывает заданный файл;

  1. Сериализация данных приложения.

Необходимость в хранилище постоянных данных создает дополнительные трудности при разработке объектно-ориентированных приложений. Команде разработчиков приходится решать, как сохранять структуру и взаимосвязи объектов приложения при записи и восстановлении постоянных данных. Решение этой проблемы - нетривиальное занятие, ведь обычно данные файла записываются в виде неструктурированного двоичного потока. Каркас MFC-приложения помогает разрешить эту непростую ситуацию, предлагая сериализацию (serialization) - метод сохранения структуры данных прикладных объектов при записи и восстановлении из архива постоянного хранения.

Встроенная в MFC сериализация обеспечивается классом CObject. Необходимо, чтобы все другие поддерживающие сериализацию классы были производными от CObject и перегружали функцию CObject::Serialize(). Задача Serialize() заключается в архивировании отдельных данных класса и сохранении и восстановлении их из объекта MFC-класса CArchive.

CArchive служит посредником между сериализуемым объектом и средой хранения данных и всегда связывается с объектом CFile. Обычно последний представляет дисковый файл, но ничто не запрещает ему представлять и файл в памяти. Например, можно связать CArchive с объектом CSharedFile для сериализации данных в буфере (или из буфера) обмена Windows. Кроме того, объект CArchive поддерживает механизм буферизации, сохраняющий типы при чтении и записи сериализуемых объектов в и из объекта CFile.

Отдельно взятый объект CArchive можно применять либо для хранения данных, либо для их загрузки, но никогда - для обеих операций одновременно. Время жизни CArchive ограничено одним проходом записи в файл или чтения объектов из файла. Для сериализации в файл и восстановления из файла создаются отдельные объекты CArchive. Предназначение CArchive (запись или чтение) можно определить, обратившись к функции CArchive::IsStoring(), возвращающей булево значение.

В классе CArchive определены операторы помещения в поток (<<) и извлечения из потока (>>). Они применяются так же, как и в стандартных классах потоков C++. Это проиллюстрировано в следующем коде:

if (ar. IsStoring())

{

ar << m_string;

}

else

{

ar >> m_string;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]