Skip to content

Repository files navigation

Console File Manager

Консольный файловый менеджер на C#/.NET. Приложение подключается к локальной файловой системе, позволяет перемещаться по каталогам, выводить дерево директорий, читать файлы и выполнять базовые операции через текстовые команды.

Проект сделан с акцентом на ООП, SOLID и расширяемую архитектуру: логика команд отделена от консольного интерфейса, а работа с файловой системой вынесена за абстракцию.

Возможности

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

Примеры команд

connect C:\Users\User\Documents -m local
tree list -d 2
tree goto projects
tree goto ..
file show notes.txt -m console
file copy notes.txt backup
file move notes.txt archive
file rename notes.txt README.txt
file delete README.txt
disconnect
q

q завершает работу приложения.

Стек

  • C# / .NET 9
  • xUnit
  • стандартная библиотека .NET

В основной логике не используются сторонние библиотеки.

Структура

src/
├── FileManager.Core/
└── FileManager.Presentation/

tests/
└── FileManager.Tests/
  • FileManager.Core — команды, состояние приложения, абстракция файловой системы, результаты выполнения и построение дерева.
  • FileManager.Presentation — консольный цикл и парсинг пользовательских команд.
  • FileManager.Tests — тесты парсера команд.

Архитектура

Основная идея проекта — отделить бизнес-логику от консольного ввода/вывода.

Core не зависит от консоли и конкретного способа ввода команд. Команды работают через общие контракты, а доступ к файловой системе идёт через IFileSystem. Сейчас реализована локальная файловая система, но сама логика команд не привязана напрямую к System.IO.

Парсер команд построен как цепочка обработчиков. Это позволяет добавлять новые команды, аргументы и флаги без превращения парсинга в один большой switch.

В проекте используются идеи и паттерны:

  • Command — отдельный объект под каждое действие пользователя;
  • Chain of Responsibility — разбор команд, аргументов и флагов;
  • Builder — сборка команд из параметров;
  • State — разные правила поведения для подключённого и отключённого состояния;
  • Composite / Visitor — построение и обход дерева файловой системы;
  • Dependency Inversion — команды зависят от абстракций, а не от конкретной консоли или файловой системы.

Запуск

git clone <repository-url>
cd <repository-folder>
dotnet restore
dotnet build
dotnet test

Запуск приложения:

dotnet run --project src/FileManager.Presentation/FileManager.Presentation.csproj

Тесты

Тестами покрыт парсер команд: проверяется, что корректный ввод создаёт команду нужного типа, а неполные или лишние аргументы приводят к ошибке парсинга.

Проверяются сценарии для:

  • connect и disconnect;
  • tree goto и tree list;
  • file show, file copy, file move, file delete, file rename;
  • ошибок при пропущенных параметрах и лишних токенах.

About

Консольный файловый менеджер на C#/.NET с парсингом команд, абстракцией файловой системы, выводом дерева каталогов и тестами.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages