Файловая система – классы CMemFile и CStdioFile
Файловая система – классы CMemFile и CStdioFile
В библиотеку MFC входит класс CMemFile , наследуемый от базового класса CFile. Класс CMemFile представляет файл, размещенный в оперативной памяти. Вы можете работать с объектами класса CMemFile также, как с объектами класса CFile. Отличие заключается в том, что файл, связанный с объектом CMemFile, на самом деле расположен не на магнитном диске, а в оперативной памяти компьютера. За счет этого операции с таким файлом происходят значительно быстрее, чем с обычными файлами.
CMemFile?CFile?CObject
Работая с объектами класса CMemFile, можно использовать все методы класса CFile, которые мы уже описали в предыдущей главе. Вы можете записывать данные в такой файл и считывать их. К сожалению, для класса CMemFile не реализованы методы блокировки LockRange и UnlockRange и метод для копирования Duplicate. Кроме этих методов, в состав класса CMemFile включены дополнительные методы.
Для создания объектов класса CMemFile предназначены два различных конструктора. Первый конструктор CMemFile имеет всего один необязательный параметр nGrowBytes:
CMemFile(UINT nGrowBytes = 1024);
Этот конструктор создает в оперативной памяти пустой файл. После создания файл автоматически открывается. Вы не должны специально вызывать метод Open.
Когда вы начинаете запись в такой файл, автоматически выделяется блок памяти. Для получения памяти методы класса CMemFile вызывают стандартные функции malloc, realloc и free. Если выделенного блока памяти недостаточно, его размер увеличивается. Увеличение блока памяти файла происходит частями по nGrowBytes байт. После удаления объекта класса CMemFile используемая им память автоматически возвращается системе.
Второй конструктор класса CMemFile имеет более сложный прототип. Этот конструктор используется в тех случаях, когда вы сами выделяете память для файла:
CMemFile(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
Параметр lpBuffer указывает на буфер, который будет использоваться для файла. Размер буфера определяется параметром nBufferSize.
Необязательный параметр nGrowBytes используется более комплексно, чем в первом конструкторе класса. Если nGrowBytes содержит нуль, то созданный файл будет содержать данные из буфера lpBuffer. Длина такого файла будет равна nBufferSize.
Класс CMemFile позволяет получить указатель на область памяти, используемую файлом. Через этот указатель можно непосредственно работать с содержимым файла, не ограничивая себя методами класса CFile.
Для получения указателя на буфер файла вы можете воспользоваться методом Detach:
BYTE * Detach();
Перед эти полезно определить длину файла и соответственно, размер буфера памяти, вызвав метод GetLength.
Метод Detach закрывает данный файл и возвращает указатель на используемый им блок памяти. Если вам требуется опять открыть файл и связать с ним блок оперативной памяти, вызовите метод Attach:
void Attach(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
Параметры метода Attach соответствуют параметрам второго конструктора класса CMemFile, рассмотренному выше. Параметр lpBuffer указывает на буфер размера nBufferSize, который будет связан с файлом.
Если необязательный параметр nGrowBytes равен нулю, то созданный файл будет содержать данные из буфера lpBuffer. Если nGrowBytes больше нуля, то содержимое буфера lpBuffer игнорируется. Если вы запишете в такой файл больше данных, чем помещается в отведенном вами буфере, его размер автоматически увеличивается на nGrowBytes байт. Для управления буфером файла класс CMemFile вызывает стандартные функции malloc, calloc и free. Поэтому, чтобы не нарушать механизм управления памяти, буфер lpBuffer должен быть создан функциями malloc или calloc.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Файловая система BSD UNIX
Файловая система BSD UNIX В версии 4.3BSD UNIX были внесены существенные улучшения в архитектуру файловой системы, повышающие как ее производительность, так и надежность. Новая файловая система получила название Berkeley Fast File System (FFS).Файловая система FFS, обладая полной
Файловая система
Файловая система Файловая система – это правила, определяющие, каким образом будет организовано хранение данных на дисках. Поскольку данные хранятся в виде файлов, файловая система определяет их формат – максимально возможные размер, длину имени и другие
Глава 2 Файловая система
Глава 2 Файловая система Все, с чем работает система UNIX, она воспринимает в виде файла. Это не такое уж упрощение, как может показаться на первый взгляд. Когда разрабатывалась первая версия системы, даже прежде, чем ей дали имя, все усилия сосредоточились на создании
1.3.1 Файловая система
1.3.1 Файловая система Файловая система UNIX характеризуется:• иерархической структурой,• согласованной обработкой массивов данных,• возможностью создания и удаления файлов,• динамическим расширением файлов,• защитой информации в файлах,• трактовкой периферийных
3.1. Файловая система
3.1. Файловая система Прежде чем перейти к настройкам системы, нам нужно познакомиться поближе с файловой системой Linux. О структуре мы уже немного поговорили в разд. 2.3, когда разбивали жесткий диск. В табл. 2.1 были перечислены разделы, которые можно создать в Linux, а это не что
7.2.2.1. Корневая файловая система и система инициализации
7.2.2.1. Корневая файловая система и система инициализации Итак, вы выбрали загрузку Linux. Загрузчик GRUB загрузит ядро, а затем передаст ему параметры и управление. Подробновесь процесс загрузки ядра рассматриваться здесь не будет. Вам достаточно знать следующее: ядру при
Файловая система
Файловая система Теперь рассмотрим несколько команд rundll32.exe, предназначенных для работы с файловой системой Windows. С их помощью можно как создавать файлы, так и удалять уже созданные файлы и каталоги Windows, но нельзя указать содержимое
Файловая система
Файловая система Настройки файловой системы являются критически важными для оптимизации скорости работы компьютера. Как правило, если параметры реестра, описывающие работу файловой системы, не оптимизированы, то возможно снижение скорости работы компьютера на 10-70%. Все
Файловая система
Файловая система Теперь скажем несколько слов о содержимом файловой системы Windows. Как правило, здесь также есть над чем поработать, особенно если места на жестком диске мало. Автор лишь приведет определенные пути к каталогам и ветви реестра, а вы сами решайте, нужны ли они
Файловая система
Файловая система С помощью этого раздела можно указать права доступа к различным каталогам файловой системы Windows XP. Чтобы указать права доступа к каталогу, необходимо сначала добавить в раздел Файловая система путь к каталогу. Для этого необходимо в контекстном меню
Файловая система
Файловая система Для доступа к файловой системе используется следующий вызов: Set имя_объекта = CreateObject("Scripting.FileSystemObject"). Объект поддерживает следующие методы.? BuildPath("путь к каталогу", "название файла") — создает путь на основе указанного пути к каталогу и имени файла. Иными
Файловая система – класс CStdioFile
Файловая система – класс CStdioFile Если вы привыкли пользоваться функциями потокового ввода/вывода из стандартной библиотеки трансляторов Си и Си++, обратите внимание на класс CStdioFile , наследованный от базового класса CFile. Этот класс позволяет выполнять буферизованный
6.6.2. Файловая система FAT
6.6.2. Файловая система FAT Файловая система FAT используется ОС MS DOS и ОС Windows для упорядочения файлов и управления ими. В основу данной файловой системы положена таблица размещения FAT (File Allocation Table), которая представляет собой структуру данных, создаваемую ОС при
6.6.2.1. Файловая система FAT 16
6.6.2.1. Файловая система FAT 16 Файловая система FAT 16 поддерживается ОС MS DOS, Windows 95, Windows 98, Windows 2000, а также некоторыми версиями ОС UNIX.Цифра 16 в названии файловой системы указывает на число бит (двоичных разрядов), необходимых для хранения информации о номерах кластеров,
6.6.5. Файловая система UDF
6.6.5. Файловая система UDF Файловая система UDF (Universal Disk Format) разработана в соответствие со стандартом ISO 13346 и используется для размещения информации на CD– и DVD-накопителях, а также для обмена информации между ними. Файловая система UDF позволяет использовать CD и DVD как НЖМД,
Файловая система для SSD
Файловая система для SSD LinuxFormat, #169 (апрель 2013)За последние лет 10-15 мы неоднократно читали победные реляции об успехах в компьютерной области. Однако настоящим успехом последних лет можно считать только начало широкого распространения SSD-накопителей: впервые за всю историю