2013-08-14 17 views
11

ディレクトリからすべてのファイルを再帰的に取得する必要があり、それはサブディレクトリですが、いくつかのディレクトリは除きます。私は彼らの名前を知っている。 boost :: filesystem :: recursive_directory_iteratorを使うことは可能ですか?boost :: filesystem :: recursive_directory_iterator with filter

答えて

19

はい、ディレクトリを反復処理しながら、あなたの除外リストの名前をテストし、そのようなディレクトリに入ってからそれを防ぐために、再帰的なイテレータのno_push()メンバーを使用することができ、のようなもの:

void selective_search(const path &search_here, const std::string &exclude_this_directory) 
{ 
    using namespace boost::filesystem; 
    recursive_directory_iterator dir(search_here), end; 
    while (dir != end) 
    { 
     // make sure we don't recurse into certain directories 
     // note: maybe check for is_directory() here as well... 
     if (dir->path().filename() == exclude_this_directory) 
     { 
      dir.no_push(); // don't recurse into this directory. 
     } 

     // do other stuff here.    

     ++dir; 
    } 
} 
+0

されますシンボリックリンクに基づいてディレクトリをフィルタリングすることが可能です。シンボリックリンクファイルで検索したくない – user765443

関連する問題