#pragma once // FileMgr.h #include #include #include #include "FileSystem.h" namespace FileSystem { class FileMgr { public: using Path = std::string; using File = std::string; using Files = std::vector; using Pattern = std::string; using Patterns = std::vector; using Dir = std::string; using Dirs = std::vector; FileMgr() { patterns_.push_back("*.*"); path_ = "."; } bool path(Path p) { if (Directory::exists(p)) { path_ = p; return true; } return false; } void addPattern(Pattern patt) { if (patterns_.size() == 1 && patterns_[0] == "*.*") patterns_.clear(); patterns_.push_back(patt); } bool search() { files_.clear(); Path p = FileSystem::Path::getFullFileSpec(path_); return find(p); } bool find(Path p) { std::cout << "\n " << p; for (auto pattern : patterns_) { Files temp = Directory::getFiles(p, pattern); for (auto file : temp) { files_.push_back(file); } } for (auto file : files_) { std::cout << "\n " << file; } Dirs dirs = Directory::getDirectories(p); for (auto dir : dirs) { if (dir == "." || dir == "..") continue; Dir d = p + "/" + dir; find(d); } return true; } private: Path path_; Patterns patterns_; Files files_; }; }