• 遍历文件夹


     //返回.exe的文件名
    
    void FindExeFile(std::string path, std::string mode, std::set<std::string> &saveExeFile)
    {
    _finddata_t file;
    intptr_t HANDLE;
    std::string pattern{ "(.*).exe" };
    std::regex reg(pattern);
    std::string Onepath = path + mode;
    HANDLE = _findfirst(Onepath.c_str(), &file);
    if (HANDLE == -1L)
    {
    LOG_WARN << "can not match the folder path";
    return;
    }
    do
    {
    //判断是否有子目录
    if (file.attrib & _A_SUBDIR)
    {
    //判断是否为"."当前目录,".."上一层目录
    if ((strcmp(file.name, ".") != 0) && (strcmp(file.name, "..") != 0))
    {
    std::string newPath = path + "\" + file.name;
    FindExeFile(newPath, mode, saveExeFile);
    }
    }
    else
    {
    bool ret = std::regex_match(file.name, reg);
    
    //找到.exe文件
    if (ret)
    {
    saveExeFile.insert(file.name);
    }
    }
    } while (_findnext(HANDLE, &file) == 0);
    _findclose(HANDLE);
    }
    
    
    
    
    
        //返回.exe所在的绝对路径
    
    void FindExeFileWithPath(std::string path, std::string mode, std::set<std::string> &saveExeFile)
    
    {
    _finddata_t file;
    intptr_t HANDLE;
    std::string pattern{ "(.*).exe" };
    std::regex reg(pattern);
    std::string Onepath = path + mode;
    HANDLE = _findfirst(Onepath.c_str(), &file);
    if (HANDLE == -1L)
    {
    return;
    }
    do
    {
    //判断是否有子目录
    if (file.attrib & _A_SUBDIR)
    {
    //判断是否为"."当前目录,".."上一层目录
    if ((strcmp(file.name, ".") != 0) && (strcmp(file.name, "..") != 0))
    {
    std::string newPath = path + "\" + file.name;
    FindExeFile(newPath, mode, saveExeFile);
    }
    }
    else
    {
    bool ret = std::regex_match(file.name, reg);
    
    //找到.exe文件
    if (ret)
    {
    saveExeFile.insert(path + "\" + file.name);
    }
    }
    } while (_findnext(HANDLE, &file) == 0);
    _findclose(HANDLE);
    }
    
    
    
    void main()
    
    {
    
      std::vector<std::string> exeFile;
    
          std::string path="C:\Windows";
    
         std::mode="*\*";
    
         FindExeFile(path, mode, exeFile);
    }
  • 相关阅读:
    Java数据结构与算法(15)
    SpringJMS解析--使用示例
    Java数据结构与算法(14)
    Java数据结构与算法(13)
    Java数据结构与算法(12)
    如何实践设计原则-面向对象设计原则
    软件架构的两大流派:组成派、决策派
    软件 可变与不可变 及封装可变性
    Java数据结构与算法(11)
    搭建本地yum仓库及自制rpm包(无需镜像)
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/12214701.html
Copyright © 2020-2023  润新知