The following code example is taken from the book
C++17 - The Complete Guide
by Nicolai M. Josuttis,
Leanpub, 2017
The code is licensed under a
Creative Commons Attribution 4.0 International License.
#include <iostream>
#include <filesystem>
int main(int argc, char* argv[])
{
if (argc < 2) {
std::cout << "Usage: " << argv[0] << " <path> \n";
return EXIT_FAILURE;
}
std::filesystem::path p{argv[1]}; // p represents a filesystem path (might not exist)
if (!exists(p)) { // does path p actually exist?
std::cout << "path " << p << " does not exist\n";
}
else {
if (is_regular_file(p)) { // is path p a regular file?
std::cout << p << " exists with " << file_size(p) << " bytes\n";
}
else if (is_directory(p)) { // is path p a directory?
std::cout << p << " is a directory containing:\n";
for (auto& e : std::filesystem::directory_iterator{p}) {
std::cout << " " << e.path() << '\n';
}
}
else {
std::cout << p << " exists, but is no regular file or directory\n";
}
}
}