我已经完成了当前代码,该代码将遍历C驱动器中的所有目录,子目录和文件。这是我的代码:
try
{
for (auto& p : fs::recursive_directory_iterator(path))
{
fs::path pathp = p.path();
std::cout << pathp << '\n';
}
}
catch (std::exception & ex)
{
std::cout << "Error - " << ex.what() << "\n";
system("PAUSE");
因此,当前的操作是当他们出现错误时,它将捕获该错误。但是随后程序完全停止执行。前2个错误是文件/目录中的uni-code,或者它无权访问某些目录(例如Intel)。我的程序在管理员权限下运行。有没有办法使我可以跳过错误所在的目录并继续执行代码?感谢帮助!谢谢!
您可以通过使用recursive_directory_iterator对象构造std::error_code并进行测试以检测任何错误来避免使用异常。
std::error_code ec;
for(auto p: fs::recursive_directory_iterator(path, ec))
{
if(ec)
{
std::cout << "Error - " << ec.message() << "\n";
continue;
}
std::cout << p << '\n';
}
手册中对各种构造函数选项进行了描述:https://en.cppreference.com/w/cpp/filesystem/recursive_directory_iterator/recursive_directory_iterator