Skip to content

julber392/VirtualFileSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Virtual File System (VFS) — C++17

Поддерживает базовые команды оболочки для навигации и работы с файлами/папками.

Возможности

  • Иерархия каталогов и файлов в памяти
  • Команды: pwd, ls, mkdir, touch, cd, cd .., write, cat, rm, tree, mv, cp, help, exit
  • Рекурсивное удаление директорий
  • Перемещение и копирование файлов/папок
  • Простая обработка кавычек для текста команды write

Сборка и запуск

Linux / macOS / Windows (MSYS/MinGW, WSL, Visual Studio с CMake)

git clone <this-repo-or-unzip>
cd cpp-vfs-project
cmake -S . -B build
cmake --build build --config Release
./build/vfs   # Windows: .\build\Release\vfs.exe

Если у вас Visual Studio, можно открыть папку как CMake-проект или запускать cmake из терминала разработчика.

Примеры

> help
> mkdir docs
> cd docs
> touch readme.txt
> write readme.txt "Hello VFS!"
> cat readme.txt
> cd ..
> ls
> tree
> mkdir src
> mv docs/readme.txt src/readme_copy.txt
> cp src/readme_copy.txt docs/readme2.txt
> rm docs -r
> exit

Особенности

  • Имена в пределах одной директории уникальны.
  • rm <path> удаляет файл; для директорий требуется флаг -r или --recursive.
  • mv и cp работают как с файлами, так и с директориями (для директорий копирование/перемещение — рекурсивные).
  • Пути поддерживают как относительные, так и абсолютные (начинающиеся с /). Разделитель — /.

Архитектура (кратко)

  • Node — базовый абстрактный класс для File и Directory.
  • Directory хранит детей в std::unordered_map<std::string, std::unique_ptr<Node>>.
  • Для навигации у узлов есть указатель на родителя (не-владеющий).
  • Вся память управляется через std::unique_ptr, утечек нет.
  • Парсер команд — простой: первая лексема — команда, далее аргументы. Для write поддерживаются кавычки (одинарные/двойные).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published