Skip to content

titeha/DriveInfo

Repository files navigation

DriveInfo

Десктопное приложение под 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 test

Лицензия

MIT © Artemy Sobolev

About

Сканирование диска(ов) и получение информации о файлах, расположенных на диске(ах)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages