ブーストイテレータ「recursive_directory_iterator」を使用して、ディレクトリを再帰的にスキャンしています。ただし、アプリケーションがアクセスできないディレクトリに反復子が実行されると、タイプ「boost::filesystem3::filesystem_error」の例外がスローされ、反復子が停止し、プログラムが中止されます。とにかく、イテレータにそのようなディレクトリをスキップするように指示できますか?
Traversing a directory with boost::filesystem without throwing exceptions で提案されているコードを試しましたが 、うまくいきませんでした。ブースト バージョン 1.49 を使用しています。
提案(私が思いつくことができる最高のもの)に従った後の私のコードは、次のようになります。
void scand()
{
boost::system::error_code ec, no_err;
// Read dir contents recurs
for (recursive_directory_iterator end, _path("/tmp", ec);
_path != end; _path.increment(ec)) {
if (ec != no_err) {
_path.pop();
continue;
}
cout << _path->path() << endl;
}
}
ありがとう、アーメド。