Книга: Системное программирование в среде Windows
Стратегии обработки файлов
Стратегии обработки файлов
Уже на ранних стадиях любого проекта разработки приложения или подготовки его к переносу на другую платформу приходится принимать решение относительно того, должна ли осуществляться обработка файлов с использованием функций библиотеки С или функций Windows. Характер этого решения не относится к категории "или-или", поскольку при соблюдении определенных мер предосторожности смешанное применение функций возможно даже по отношению к одному и тому же файлу.
Библиотека С обладает рядом явных преимуществ, среди которых можно выделить следующие:
• Полученный программный код легко переносится на другие системы.
• Наличие удобных функций для работы с символами и строками, не имеющих прямых аналогов среди функций Windows, упрощает обработку строк.
• Функции библиотеки С обычно проще в использовании по сравнению с функциями Windows.
• Функции, ориентированные на обработку символьных строк и потоков, легко преобразовать к форме, допускающей указание обобщенных символов при их вызове, хотя преимущества переносимости при этом будут утеряны.
• Как показано в главе 7, функции библиотеки С способны работать и в средах с многопоточной поддержкой.
Тем не менее, использование библиотеки С налагает некоторые ограничения. В пользу этого утверждения можно привести перечисленные ниже соображения:
• Средства библиотеки С не обеспечивают управление каталогами и обход дерева каталогов и в большинстве случаев не позволяют получать или устанавливать атрибутов файлов.
• В функции fseek, входящей в библиотеку С, используются 32-битовые указатели файла, и поэтому, несмотря на возможность последовательного считывания гигантских файлов, установка произвольной позиции в таком файле, как это требуется, например, в программе 3.1, оказывается невозможной.
• Библиотека С не предоставляет такие развитые возможности, как защита файлов, отображение файлов, блокирование файлов, асинхронный ввод/вывод и взаимодействие между процессами. Вместе с тем, как показано в приложении В, использование некоторых из этих возможностей в ряде случаев может обеспечивать существенное улучшение показателей производительности программ.
Альтернативным вариантом является перенос существующего UNIX-кода с привлечением библиотеки совместимости (compatibility library). Microsoft С предоставляет ограниченную библиотеку совместимости, включающую многие, хотя и далеко не все, функции UNIX. К числу функций UNIX, входящих в состав библиотеки Microsoft, относятся функции ввода/вывода, однако большинство функций управления процессами, не говоря о многих других функциях, в ней отсутствуют. В именах функций-аналогов присутствует префикс в виде символа подчеркивания, например, _read, _write, _stat и так далее.
Решения относительно смешанного использования функций библиотеки С, библиотеки совместимости и Win32/64 API должны приниматься на основании требований проекта. Многие из преимуществ функций Windows будут продемонстрированы в следующих главах, а для ознакомления с количественными данными, характеризующими производительность, которые пригодятся вам в тех случаях, когда этот фактор становится решающим, вы можете обратиться к приложению В.
- 64-битовая файловая система
- Указатели файлов
- Определение размера файла
- Пример: обновление записей, находящихся в произвольном месте файла
- Атрибуты файлов и управление каталогами
- Точки монтирования
- Пример: вывод списка атрибутов файла
- Пример: установка меток времени файла
- Стратегии обработки файлов
- Блокирование файлов
- Реестр
- Управление системным реестром
- Пример: вывод списка разделов и содержимого реестра
- Резюме
- Упражнения
- 13.3. Блокирование файлов
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Выбор стратегии ценообразования
- Создание файлов с блокировкой
- Рекомендуемое расширение для файлов баз данных - *.ib
- 1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации
- Создание многофайловой базы данных
- Правила именования файлов
- Глава 6 Файловые системы
- 3.4 Сетевая файловая система
- 6.4 Другие файловые системы