//******************************************************** // The following code example is taken from the book // C++17 - The Complete Guide // by Nicolai M. Josuttis (www.josuttis.com) // http://www.cppstd17.com // // The code is licensed under a // Creative Commons Attribution 4.0 International License // http://creativecommons.org/licenses/by/4.0/ //******************************************************** #include #include #include // for EXIT_FAILURE int main(int argc, char* argv[]) { if (argc < 2) { std::cout << "Usage: " << argv[0] << " \n"; return EXIT_FAILURE; } namespace fs = std::filesystem; switch (fs::path p{argv[1]}; status(p).type()) { case fs::file_type::not_found: std::cout << "path \"" << p.string() << "\" does not exist\n"; break; case fs::file_type::regular: std::cout << '"' << p.string() << "\" exists with " << file_size(p) << " bytes\n"; break; case fs::file_type::directory: std::cout << '"' << p.string() << "\" is a directory containing:\n"; for (const auto& e : std::filesystem::directory_iterator{p}) { std::cout << " " << e.path().string() << '\n'; } break; default: std::cout << '"' << p.string() << "\" is a special file\n"; break; } }