windows 磁盘文件目录遍历

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20307987/article/details/81381169
#define _CRT_SECURE_NO_WARNINGS
//

#include <windows.h>
#include <Shlwapi.h>
#include <iostream>
#include <string>
#include <vector>
#pragma comment(lib,"shlwapi.lib")  
using namespace std;


void findFile(string dir)
{
    WIN32_FIND_DATAA stFD ;                         //存放文件信息的结构体
    HANDLE h;
    string temp;

    temp=dir+"\\*";
    h=FindFirstFileA(temp.c_str(),&stFD);           //构建目录句柄

    while(FindNextFileA(h,&stFD))                       //提取目录句柄对应目录所包含的文件
    {
        temp=dir+"\\"+stFD.cFileName;

        if(temp==dir+"\\..")                                        //上一级路径
        {
            continue;
        }
        else if(PathIsDirectoryA(temp.c_str()) )        //包含子目录
        {
            findFile(temp);                                             //递归调用
        }
        else
        {
            cout<<dir<<stFD.cFileName<<endl;                //打印文件名
        }
    }

    return ;
}

int main()
{
    DWORD dwDriverStringsLength = 256;
    char lpBuffer[256]={0};
    GetLogicalDriveStringsA(dwDriverStringsLength,lpBuffer);

    for(int i=0;i<255;i++)
    {
        if(lpBuffer[i] == '\0')
            lpBuffer[i]='@';
    }
    char * split = "\\@";
    char * p= NULL;
    p  = strtok(lpBuffer,split);
    while(p)
    {
        printf("%s\n",p);
        findFile(p);

        p = strtok(NULL,split);

    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_20307987/article/details/81381169
今日推荐