Программно определить состояние фрагментации файла - PullRequest
1 голос
/ 26 марта 2010

Можно ли определить статус фрагментации конкретного файла (то есть количество отдельных фрагментов, занимаемых этим файлом)? Если это так, как это можно сделать с помощью .net?

Мотивация такова: мое приложение хранит данные в FileStream, меняя его размер по требованию. В конечном итоге это приводит к фрагментации файла. Я хотел бы отслеживать состояние фрагментации файла и, исходя из этого, принять решение о том, должен ли файл быть скопирован и заменен новым файлом (таким образом, «дефрагментируя» его без внесения изменений в MFT).

1 Ответ

3 голосов
/ 26 марта 2010

Это прямо относится к категории «преждевременная оптимизация». Совершенно не гарантируется, что вы будете вызывать фрагментацию, диск может иметь незафиксированные кластеры после конца файла и часто имеет Возможно, более того, в .NET Framework нет ничего, что позволяло бы обнаруживать или исправлять это. Доступ к MFT тома требует неуправляемого кода и прав администратора.

Дефрагментация диска - обычная задача технического обслуживания машины. Это стало автоматическим с Win7.

...