zoukankan      html  css  js  c++  java
  • C++ 获取文件夹下的所有文件名

    头文件:#include<io.h>

    getFiles1函数:获取某个文件夹下的所有文件,返回各文件的路径

    getFiles2函数:获取某个文件夹下的所有文件,返回各文件的路径和名称

    //主函数
    char
    * filePath = "D:\sample"; vector<string> files; //vector<string> filesname;
    //获取该路径下的所有文件路径 getFiles1(filePath, files);
    //获取该路径下的所有文件路径和文件名
    //getFiles2(filePath, files, filesname);
    char str[30]; for (int i = 0;i < files.size();i++) { cout<<files[i].c_str()<<endl; }
    void getFiles1( string path, vector<string>& files )  
    {  
        //文件句柄  
        //long hFile = 0;  //win7
    intptr_t hFile = 0; //win10
    //文件信息 struct _finddata_t fileinfo; string p; if((hFile = _findfirst(p.assign(path).append("\*").c_str(),&fileinfo)) != -1)
    // "\*"是指读取文件夹下的所有类型的文件,若想读取特定类型的文件,以png为例,则用“\*.png” {
    do { //如果是目录,迭代之 //如果不是,加入列表 if((fileinfo.attrib & _A_SUBDIR)) { if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0) getFiles1( p.assign(path).append("\").append(fileinfo.name), files ); } else { files.push_back(path + "\" + fileinfo.name); } }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } }

     

    void getFiles2( string path, vector<string>& files, vector<string> &ownname)  
    {  
        /*files存储文件的路径及名称(eg.   C:UsersWUQPDesktop	est_devideddata1.txt)
         ownname只存储文件的名称(eg.     data1.txt)*/
        
        //文件句柄  
        long   hFile   =   0;  
        //文件信息  
        struct _finddata_t fileinfo;  
        string p;  
        if((hFile = _findfirst(p.assign(path).append("\*").c_str(),&fileinfo)) !=  -1)  
        {  
            do  
            {  
                //如果是目录,迭代之  
                //如果不是,加入列表  
                if((fileinfo.attrib &  _A_SUBDIR))  
                {  
                    if(strcmp(fileinfo.name,".") != 0  &&  strcmp(fileinfo.name,"..") != 0)  
                        getFiles2( p.assign(path).append("\").append(fileinfo.name), files, ownname ); 
                }  
                else  
                {  
                    files.push_back(path +"\" + fileinfo.name);  
                    ownname.push_back(fileinfo.name);
                }  
            }while(_findnext(hFile, &fileinfo)  == 0);  
            _findclose(hFile);  
        }  
    }

    Win10下C++代码文件夹遍历错误:0xC0000005: 写入位置时发生访问冲突

    win7下定义的文件句柄类型是long型,在win10下将其改为intptr_t类型即可。

    参考博客:

    https://www.cnblogs.com/fnlingnzb-learner/p/6424563.html

    https://www.cnblogs.com/wqpkita/p/6849283.html

  • 相关阅读:
    [Matlab.Matrix] 作为判断条件
    [Matlab.GUI] 学习小结
    [Modelsim] 初识
    [Matlab] isnan
    [Matlab] round
    [VS2012] 无法查找或打开 PDB 文件
    [Matlab.GUI]初识
    表格特效代码全集中
    JAVASCRIPT基础
    第4天:调用样式表
  • 原文地址:https://www.cnblogs.com/yuehouse/p/10159358.html
Copyright © 2011-2022 走看看