提高::文件系统:: recursive_directory_iterator带过滤器 [英] boost::filesystem::recursive_directory_iterator with filter

查看:168
本文介绍了提高::文件系统:: recursive_directory_iterator带过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要递归获得目录中的所有文件和它的子目录,但不包括几个目录。我知道他们的名字。是否有可能做的boost ::文件系统:: recursive_directory_iterator?

I need to recursively get all files from directory and it's subdirectory, but excluding several directory. I know their names. Is it possible to do with boost::filesystem::recursive_directory_iterator ?

推荐答案

是的,在遍历目录,您可以测试您的排除列表上的名字,并使用 no_push()从进入这样的目录递归迭代器prevent它的成员,是这样的:

Yes, while iterating over directories, you can test for the names on your exclusion list and use the no_push() member of the recursive iterator to prevent it from going into such a directory, something like:

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;
    }
 }

这篇关于提高::文件系统:: recursive_directory_iterator带过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆