Разреженные файлы

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

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

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

Значение данных разреженного файла по умолчанию равно нулю; однако для него можно задать другие значения.

Дополнительные сведения о разреженных файлах см. в следующих разделах.

В этом разделе

Раздел Описание
Операции с разреженным файлом
Определите, поддерживает ли файловая система разреженные файлы, вызвав функцию GetVolumeInformation.
Получение размера разреженного файла
Получите выделенный размер или общий размер файла с помощью функции GetCompressedFileSize или GetFileSize .
Разреженные файлы и дисковые квоты
Разреженный файл влияет на квоты пользователей по номинальному размеру файла, а не фактическому выделенному объему дискового пространства.