Десктопное приложение под Windows для сканирования дисков и анализа занятого места: строит дерево каталогов с реальным размером файлов на диске (с учётом кластеров, сжатия NTFS и жёстких ссылок), показывает круговую диаграмму разбивки по текущему уровню и обновляется «на лету» при изменениях файловой системы.
- Точный размер на диске. Помимо логического размера считается фактически
занимаемое место с округлением до кластера (
GetCompressedFileSize, размер кластера тома через WMI), маленькие файлы учитываются как резидентные в MFT. - Дедупликация жёстких ссылок. Файл, на который ведёт несколько ссылок, в суммах учитывается один раз.
- Дерево каталогов с колонками «На диске» и «Размер», подсветкой скрытых, системных, junction- и недоступных элементов.
- Круговая диаграмма текущего уровня; двойной клик по сектору-каталогу «проваливается» внутрь, кнопка «Вверх» и синхронизация с выбором в дереве.
- Корректный учёт защищённых областей. Общее занятое место берётся у ОС
(
TotalSize − TotalFreeSpace), а недосканированная разница (защищённое, служебные метаданные ФС) показывается отдельным сегментом «Прочее/системное». В защищённые области и точки соединения навигация заблокирована с сообщением. - Живые обновления. Фоновый
FileSystemWatcherс дебаунсом запускает авто-перескан по простою (отключается тумблером «Авто-обновление»). - Удобный UX: список томов с метками, окно прогресса с отменой (появляется, если скан дольше 3 секунд), подвижная граница между деревом и диаграммой.
| Проект | Назначение |
|---|---|
Library/FileServices |
Ядро: сканирование диска, WinAPI/WMI-хелперы (размер на диске, жёсткие ссылки, junction), слежение за ФС (DriveWatcher) |
UI/ShowDriveInfo |
WPF-приложение (MVVM): сканирование, дерево, диаграмма |
Tests/FileServices.Tests |
Юнит-тесты ядра (xUnit) |
Tests/ShowDriveInfo.Tests |
Юнит-тесты прикладной логики (мост, конвертеры) |
Архитектура: ядро отдаёт плоский поток FSDTO, прикладной слой собирает из него
дерево (FileSystemTreeBuilder) с дедупликацией и подсчётом «прочего». UI — на
ручном MVVM поверх библиотеки Ti-Soft.MvvmUtilites.
- Windows 10 версии 1809 (10.0.17763) или новее
- .NET SDK 10
- Пакет
Ti-Soft.MvvmUtilites(с nuget.org; до публикации подключается из локального фида черезnuget.configв корне репозитория)
dotnet build DriveInfo.sln
dotnet run --project UI/ShowDriveInfoЕсли при восстановлении не найден
Ti-Soft.MvvmUtilites— проверьте источник вnuget.config(локальный фид) либо дождитесь публикации пакета на nuget.org.
Сканирование системного диска (C:) может занять время; часть защищённых
каталогов будет пропущена и учтена в сегменте «Прочее/системное». Для быстрой
проверки удобнее небольшой том.
dotnet testMIT © Artemy Sobolev