Установка размера файла, инициализация файла и разреженные файлы

Установка размера файла, инициализация файла и разреженные файлы

Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла содержимое области расширения не определено. Файл будет фактически потреблять выделенные квоты дискового и пользовательского пространств, если только не является разреженным. Файлы можно сжимать с целью уменьшения объема занимаемого ими пространства. Этот вопрос исследуется в упражнении 3.1.

Функция SetEndOfFile устанавливает физический конец файла. Прежде чем выполнять эту операцию, на которую может уйти довольно длительное время, необходимое для записи данных файл с целью его заполнения, можно установить также логический конец файла, используя для этого функцию SetValidFileData. Эта функция определяет ту часть файла, которая, в соответствии с вашими предположениями, в настоящий момент содержит достоверные данные, благодаря чему вы сможете сэкономить время при установке физического конца файла. Часть файла, заключенная между его логическим и физическим концами, называется хвостовиком (tail) и может быть сокращена путем записи оставшихся данных после логического конца файла или в результате дополнительного вызова функции SetValidFileData.

В случае разреженных файлов (sparse files), появившихся в Windows 2000, дисковое пространство расходуется лишь по мере записи данных. Администратор может назначать, какие файлы, каталоги или тома должны быть разреженными. Кроме того, можно назначить существующий файл в качестве разреженного с помощью функции DeviceIoControl, если установить при ее вызове флаг FSCTL_SET_SPARSE. Ситуацию, в которой удобно использовать разреженные файлы, иллюстрирует программа 3.1. К разреженным файлам функция SetValidFileData неприменима.

Файлы FAT нулями автоматически не инициализируются. Согласно документации Microsoft содержимое вновь созданных файлов не определено, что подтверждается экспериментами. Поэтому, если для корректной работы требуется инициализация файлов, приложения должны это делать самостоятельно путем вызова функции WriteFile. Файлы NTFS будут инициализированы, поскольку уровень безопасности С2, обеспечиваемый Windows, требует, чтобы чтение содержимого удаленных файлов было невозможным.

Обратите внимание, что кроме функции SetEndOfFile существуют и другие способы расширения размера файла. Так, можно расширить файл, используя ряд последовательных операций записи, хотя при этом существует риск увеличения степени фрагментации файла; размещение на диске файлов в виде непрерывных блоков большого размера функция SetEndOfFile отдает на откуп операционной системе.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Установка размера столбца

Из книги Microsoft Office автора Леонтьев Виталий Петрович

Установка размера столбца Мы уже говорили, что размер столбцов можно варьировать. Пришло время проверить это утверждение на практике. Если вы хотите, чтобы все столбцы в таблице были одинакового размера, наведите курсор на правую границу верхнего индекса


4.3.4. Установка размера бумаги

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

4.3.4. Установка размера бумаги На складке Параметры принтера конфигуратора system-config-printer вы можете задать формат бумаги, загруженной сейчас в принтер (рис 4.15). Рис. 4.15. Выбор формата используемой


7.1. Файл и имя файла

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

7.1. Файл и имя файла Информация на носителях данных (жестких, оптических дисках, дискетах) хранится в файлах. Строгое определение файла звучит так: «файл — это поименованная область на диске». Разберемся, что здесь к чему. При форматировании жесткого диска производится его


Чтение файла 

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Чтение файла  BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) Возвращаемое значение: в случае успешного выполнения (которое считается таковым, даже если не был считан ни один байт из-за попытки чтения с выходом за пределы файла) — TRUE, иначе —


Определение размера файла

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Определение размера файла Размер файла можно получить, используя значение указателя файла, возвращаемое функцией SetFilePointer, если при вызове этой функции задать количество байтов, на которое должен быть перемещен указатель файла, равным 0. Для этой же цели можно


Пример: установка меток времени файла

Из книги C++. Сборник рецептов автора Диггинс Кристофер

Пример: установка меток времени файла Программа 3.3 реализует UNIX-команду touch, предназначенную для изменения кода защиты файлов и обновления меток времени до текущих значений системного времени. В упражнении 3.11 от вас требуется расширить возможности функции touch таким


10.1.2. Обновление файла

Из книги Delphi. Трюки и эффекты автора Чиртик Александр Анатольевич

10.1.2. Обновление файла Чтобы открыть файл для чтения и записи, достаточно добавить знак плюс (+) в строку указания режима (см. раздел 10.1.1):f1 = File.new("file1", "r+")# Чтение/запись, от начала файла.f2 = File.new("file2", "w+")# Чтение/запись; усечь существующий файл или создать новый.f3 = File.new("file3", "а+")#


10.1.11. Проверка существования и получение размера файла

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

10.1.11. Проверка существования и получение размера файла Часто необходимо знать, существует ли файл с данным именем. Это позволяет выяснить метод exist? из модуля FileTest:flag = FileTest::exist?("LochNessMonster")flag = FileTest::exists?("UFO")# exists? является синонимом exist?Понятно, что такой метод не может быть


Глава 2 Уменьшение размера ЕХЕ-файла. Использование Windows API

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Глава 2 Уменьшение размера ЕХЕ-файла. Использование Windows API • Источник лишних килобайт• Создание окна вручную• Окно с элементами управления• Стандартные диалоговые окна Windows• Установка шрифта элементов управленияНе секрет, что размер скомпилированного ЕХЕ-файла


Установка размера кэша на уровне базы данных

Из книги автора

Установка размера кэша на уровне базы данных Существует несколько способов конфигурирования размера кэша для конкретной базы данных. Изменения не действуют до тех пор, пока не будет установлено новое соединение с Суперсервером Firebird или не будет соединен новый клиент с


Установка размера кэша по умолчанию

Из книги автора

Установка размера кэша по умолчанию Использование gfix является предпочтительным способом установки размера кэша по умолчанию для базы данных. Важно помнить некоторые моменты.* Если вы увеличиваете размер страницы, размер кэша соответственно увеличится. Вы должны


Б.1.1. Открытие файла

Из книги автора

Б.1.1. Открытие файла Чтобы открыть файл и получить дескриптор для работы с ним, необходимо вызвать функцию open(). В качестве аргументов она принимает строку с путевым именем файла и флаги, определяющие способ открытия. С помощью функции open() можно также создать новый файл.


Установка драйвера из INF-файла

Из книги автора

Установка драйвера из INF-файла Рассмотрим ситуацию, когда для установки оборудования используется набор из INF-файлов.Откройте Панель управления и запустите механизм Диспетчер устройств. В результате откроется окно, в котором вы можете видеть список всех устройств,