logo search
Конспект по ООПиП ч

28. Непосредственное чтение и запись файлов. Класс сFile. Методы сFile. Режимы доступа к файлу.

Хотя использование встроенной в MFC технологии сохранения-восстановления данных и обеспечивает основные требования приложения при работе с файлами, иногда необходимо реализовать нестандартные процедуры управления файловой системой, не укладывающиеся в рамки этой технологии. Например, может возникнуть необходимость вывести информацию в файл, из которого не нужно снова считывать данные в объекты программы, или тот способ записи-считывания, который реализуется в функции Serialize(), вас не устраивает, поскольку там возможен только последовательный доступ к файлу (ввод-вывод в поток). В этих случаях можно использовать методики программирования файловых операций — непосредственное создание файла, чтение и запись информации в файл. Для непосредственного управления процессами ввода-вывода в файл в распоряжение программиста MFC предоставляет класс CFile и производные от него.

Класс CFile

Включенный в состав MFC класс CFile инкапсулирует все функции, связанные с обработкой файлов любого типа. Собираетесь ли вы использовать обычный последовательный способ записи-чтения данных или организовать файл с произвольным доступом к данным, в любом случае можно использовать методы класса CFile. При этом последовательность операций очень напоминает прежние С-программы, за исключением того, что класс скрывает некоторые их детали. В результате несколько снижается количество операторов, но принципиально это прежний хорошо знакомый подход. Теперь, в частности, создать файл для чтения можно, используя единственный оператор.

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

Функция

Назначение

Конструктор

Создает экземпляр класса CFilе. Если передать аргумент, имя файла открывает заданный файл

Деструктор

Уничтожает экземпляр класса CFile. Если соответствующий файл открыт, закрывает, его перед удалением экземпляра класса

Abort ()

Немедленно закрывает файл, не обращая внимания на ошибки

Close()

Закрывает файл

Duplicate()

Создает экземпляр класса для дубликата файла

Flush()

Сбрасывает данные из потока

GetFileName()

Считывает имя файла

GetFilePath()

Считывает полный путь файла

GetFileTitle()

Считывает имя файла без расширения (file title)

GetLength()

Считывает длину файла

GetPosition()

Считывает текущую позицию в файле

GetStatus()

Считывает статус файла

LockRange()

Блокирует фрагмент файла для доступа со стороны других процессов

Open()

Открывает файл

Read()

Считывает данные из файла

Remove()

Стирает файл

Rename()

Переименовывает файл

Seek()

Переставляет указатель текущей позиции в файле

SeekToBegin()

Устанавливает указатель текущей позиции, на начало файла

SeekToEnd()

Устанавливает указатель текущей позиции на конец файла

SetFilePath( )

Устанавливает путь к файлу

SetLength()

Устанавливает длину файла

SetStatus()

Устанавливает статус файла

UnlockRange()

Снимает блокировку фрагмента файла

Write()

Записывает данные в файл