std::filesystem::path p{argv[1]}; // p represents a filesystem path (might not exist)
if (is_regular_file(p)) { // is path p a regular file?
std::cout << '"' << p.string() << "\" exists with "
<< file_size(p) << " bytes\n";
}
else if (is_directory(p)) { // is path p a 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";
}
}
else if (exists(p)) { // does path p actually exist?
std::cout << '"' << p.string() << "\" is a special file\n";
}
else {
std::cout << "path \"" << p.string() << "\" does not exist\n";
}
}