boost文件系统封装类

 懒的写说明 直接铺代码

 

 

#include <boost/tokenizer.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/filesystem/exception.hpp>
#include "FilePath.hpp"

using namespace boost::algorithm;
namespace g
{
    namespace file
    {
        FilePath::FilePath(string _filepath): filepath(_filepath),
                                              subpath(false),
                                              usesf(false)
        {}  
       
        void FilePath::set_suffix(const string &suffixs)
        {
            string temp(suffixs);
            to_lower(temp);
            tokenizer<> sf(temp);                
            for(tokenizer<>::iterator itr = sf.begin(); itr != sf.end();++itr)
            {
                suffix.insert(*itr);
            }
            usesf = true;                       
        }                                    
       
        void FilePath::get_files(vector<string> &files)
        {
            boost::filesystem::path _filepath(filepath,boost::filesystem::native);
            find(_filepath);
            files = file;                   
        }
       
        void FilePath::find(boost::filesystem::path p)
        {
            try
            {
                if(boost::filesystem::exists(p) == true)
                {
                    boost::filesystem::directory_iterator item_begin(p);
                    boost::filesystem::directory_iterator item_end;
                   
                    for(;item_begin != item_end; item_begin++ )
                    {
                        if (boost::filesystem::is_directory( * item_begin) == true && subpath == true)
                        {
                           // (*item_begin)
        //(*itr)
        find(item_begin->path());   
                        }
                        else
                        {   
                           string filename =item_begin->leaf();
                           if(usesf == true)
                           {
                               to_lower(filename);
                              
                               set<string>::iterator itr = suffix.begin();
                               while(itr != suffix.end())
                               {
                                  if(ends_with(filename, *itr)== true)
                                    file.push_back(filename);      
                                  itr ++;         
                               }
                                   
                           }
                           else
                           {
                               file.push_back(filename);   
                           }
                        }
                    }  
                }
            }   
            catch(boost::filesystem::filesystem_error e)
            {   
            }  
        }
    }   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值