zoukankan      html  css  js  c++  java
  • C/C++遍历Windows文件夹下的所有文件

       因为文件夹中往往包含文件和文件夹。想要遍历所有的文件,必须遍历文件夹中所有的文件夹。很显然,这个描述满足递归的两个要素:(1)问题的规模在不断的缩小,且新问题的模式与旧问题相同。很显然文件夹中含有子文件夹同样需要遍历。(2)含有简单的终止条件,即遇到文件夹下再无文件夹停止。

         C++遍历文件夹下所有文件如下:

    复制代码
    int osmgpxPaser::GetAllgpxFilepathFromfolder(char*  Path)
    {
        char szFind[MAX_PATH];
        WIN32_FIND_DATA FindFileData;
        strcpy(szFind,Path);
        strcat(szFind,"\*.*");
        HANDLE hFind=FindFirstFile(szFind,&FindFileData);
        if(INVALID_HANDLE_VALUE == hFind)   
            return -1;
    
        do
        {
            if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                if(strcmp(FindFileData.cFileName,".")!=0 && strcmp(FindFileData.cFileName, "..")!=0)
                {
                    //发现子目录,递归之
                    char szFile[MAX_PATH] = {0};
                    strcpy(szFile,Path);
                    strcat(szFile,"\");
                    strcat(szFile,FindFileData.cFileName);
                    GetAllgpxFilepathFromfolder(szFile);
                }
            }
            else
            {
                //找到文件,处理之
                std::cout << lpPath << "\" << FindFileData.cFileName << std::endl;
            }
        }while(FindNextFile(hFind,&FindFileData));
    
        FindClose(hFind);
    
        return 0;
    }
    复制代码

    这里不得不说一下FindFirstFile()函数。使用它必须引用windows.h头文件,FindFirstFile第一个参数需要一个路径,但要写*.*,表示从所有文件中找到的第一个.第二个参数用于存储文件信息,找到的文件的文件结构被记录在WIN32_FIND_DATA结构体里。

    另外,如果直接编译以上代码可能会出现以下错误: error C2664: “FindFirstFileW”: 不能将参数 1 从“char [261]”转换为“LPCWSTR” ,解决方法为:

    把工程设置里去掉UNICODE宏定义:项目->XXX属性->配置属性->常规->字符集 改为 “未设置” 就去掉了unicode支持,不过应该回报一个警告。

    或在#include <windows.h>之前加上一句 #undef UNICODE

  • 相关阅读:
    Python 集合
    Python sorted()
    CodeForces 508C Anya and Ghosts
    CodeForces 496B Secret Combination
    CodeForces 483B Friends and Presents
    CodeForces 490C Hacking Cypher
    CodeForces 483C Diverse Permutation
    CodeForces 478C Table Decorations
    CodeForces 454C Little Pony and Expected Maximum
    CodeForces 313C Ilya and Matrix
  • 原文地址:https://www.cnblogs.com/daochong/p/7127286.html
Copyright © 2011-2022 走看看