使用ACE递归查找文件的跨平台实现

void mydir::get_one_dir(const string& parent, const string& dir_name) 

        ACE_DIR*  base_dir = ACE_OS::opendir(parent.c_str());//打开父目录,并返回目录句柄 
        if(base_dir == NULL) 
        { 
                if(comparer(dir_name.c_str(), mid_type/*key of ext name*/) || 
comparer(dir_name.c_str(), MID_TYPE/*key of ext name*/))//比较文件扩展名 
                { 
                        if(file_type_is_available(dir_name.c_str()))//判断文件类型是否是命令行参数传递进来的要处理 
的文件类型 
                        { 
                                int i_file_type = get_file_type(dir_name);//根据文件名获取数据类型 
                                string_vector_map::iterator it_file_array = 
file_array.find(i_file_type); 
                                if(it_file_array != file_array.end()) 
                                { 
                                        it_file_array->second.push_back(parent); 
                                } 
                                else 
                                { 
                                        string_vector path_array; 
                                        path_array.push_back(parent); 
                                        file_array.insert(string_vector_map::value_type(i_file_type, 
path_array)); 
                                } 
                        } 
                } 
        } 
        else 
        { 
                struct ACE_DIRENT * dir = NULL; 
                while((dir = ACE_OS::readdir(base_dir)) != NULL)//根据目录句柄获取该目录下包含的一下个目 
录 
                { 
                        string str_ext = dir->d_name; 
                        if(str_ext != "." && str_ext != "..") 
                        { 
                                if(parent.find('//') != string::npos)//windows下的目录递归 
                                { 
                                        get_one_dir(parent + '//' + dir->d_name, string(dir->d_name)); 
                                } 
                                else//linux下的目录递归 
                                { 
                                        get_one_dir(parent + '/' + dir->d_name, string(dir->d_name)); 
                                } 
                        } 
                } 
                ACE_OS::closedir(base_dir);//关闭目录 
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值