版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}