首页 > 软件开发 > 编程语言 >

c++ 文件遍历控制台程序

来源:互联网 2023-03-17 00:11:33 版权归原作者所有,如有侵权,请联系我们

c 文件遍历控制台程序s32办公区 - 实用经验教程分享!

c   文件遍历控制台程序s32办公区 - 实用经验教程分享!

工具/原料

  • Visual studio 2015

方法/步骤

  • 1

    编译预处理:s32办公区 - 实用经验教程分享!

    #includeiostream>s32办公区 - 实用经验教程分享!

    #includestring>s32办公区 - 实用经验教程分享!

    #includeio.h>s32办公区 - 实用经验教程分享!

    #includestdio.h>s32办公区 - 实用经验教程分享!

    #includestdlib.h>s32办公区 - 实用经验教程分享!

  • 1相关内容未经授权抓取自百度经验
  • 2

    遍历文件通常先寻找第一个文件是否存在s32办公区 - 实用经验教程分享!

    hfile = _findfirst(s.assign(path).append("/*").c_str(), &filefind)) != -1s32办公区 - 实用经验教程分享!

    hfile为文件句柄s32办公区 - 实用经验教程分享!

    为intptr_t类型s32办公区 - 实用经验教程分享!

    intptr_t hfile =0;s32办公区 - 实用经验教程分享!

  • 3

    判断得到的文件名是文件还是文件夹s32办公区 - 实用经验教程分享!

    filefind.attrib == _A_SUBDIRs32办公区 - 实用经验教程分享!

    如果是文件夹则再次调用遍历函数,使用递归。s32办公区 - 实用经验教程分享!

    如果是文件则记录文件路径s32办公区 - 实用经验教程分享!

    if (filefind.attrib == _A_SUBDIR) {s32办公区 - 实用经验教程分享!

    if(strcmp(filefind.name,".")&&strcmp(filefind.name,".."))s32办公区 - 实用经验教程分享!

    {s32办公区 - 实用经验教程分享!

    findfile(s.assign(path).append("/").append(filefind.name), files);}s32办公区 - 实用经验教程分享!

    }else {s32办公区 - 实用经验教程分享!

    files.push_back(s.assign(path).append("/").append(filefind.name));//s32办公区 - 实用经验教程分享!

    std::cout filefind.name std::endl;}s32办公区 - 实用经验教程分享!

  • 4

    最后关闭句柄s32办公区 - 实用经验教程分享!

    _findclose(hfile);s32办公区 - 实用经验教程分享!

  • 5

    完整代码:s32办公区 - 实用经验教程分享!

    #includeiostream>s32办公区 - 实用经验教程分享!

    #includestring>s32办公区 - 实用经验教程分享!

    #includeio.h>s32办公区 - 实用经验教程分享!

    #includestdio.h>s32办公区 - 实用经验教程分享!

    #includestdlib.h>s32办公区 - 实用经验教程分享!

    s32办公区 - 实用经验教程分享!

    void findfile(std::string path,std::vectorstd::string> &files) {s32办公区 - 实用经验教程分享!

    struct _finddata_t filefind;s32办公区 - 实用经验教程分享!

    intptr_t hfile =0;s32办公区 - 实用经验教程分享!

    std::string s;s32办公区 - 实用经验教程分享!

    if ((hfile = _findfirst(s.assign(path).append("/*").c_str(), &filefind)) != -1) {s32办公区 - 实用经验教程分享!

    do{s32办公区 - 实用经验教程分享!

    if (filefind.attrib == _A_SUBDIR) {s32办公区 - 实用经验教程分享!

    if(strcmp(filefind.name,".")&&strcmp(filefind.name,"..")){s32办公区 - 实用经验教程分享!

    findfile(s.assign(path).append("/").append(filefind.name), files);}}s32办公区 - 实用经验教程分享!

    else {s32办公区 - 实用经验教程分享!

    files.push_back(s.assign(path).append("/").append(filefind.name));s32办公区 - 实用经验教程分享!

    std::cout filefind.name std::endl;}s32办公区 - 实用经验教程分享!

    } while (_findnext(hfile, &filefind) == 0);s32办公区 - 实用经验教程分享!

    }_findclose(hfile);}s32办公区 - 实用经验教程分享!

    int main(){s32办公区 - 实用经验教程分享!

    std::string path = "D:/test"; //要遍历的文件夹s32办公区 - 实用经验教程分享!

    std::vectorstd::string> files;//通过容器存储s32办公区 - 实用经验教程分享!

    int i=0;s32办公区 - 实用经验教程分享!

    findfile(path, files);s32办公区 - 实用经验教程分享!

    for (int i = 0;i files.size();i ) {s32办公区 - 实用经验教程分享!

    std::coutas[i]std::endl;//输出遍历得到的文件夹}s32办公区 - 实用经验教程分享!

    system("pause");s32办公区 - 实用经验教程分享!

    return 0;s32办公区 - 实用经验教程分享!

    }s32办公区 - 实用经验教程分享!

    s32办公区 - 实用经验教程分享!

    c   文件遍历控制台程序s32办公区 - 实用经验教程分享!

  • 注意事项

    • 可以将“/*”换成想要便利的文件类型例如“/*.txt”等
    • "."和".."为系统的隐藏的文件夹

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!s32办公区 - 实用经验教程分享!


    标签: 编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号