話不多說,直接上代碼。
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <bits/stdc++.h>
using namespace std;
long cnt=0;
void viewfiles(char *directory)
{
WIN32_FIND_DATA fdFindData;
HANDLE hFind;
char *filename;
int count=0;
BOOL done;
filename=new char[strlen(directory)+5];
strcpy(filename,directory);
strcat(filename,"\\*.*");
hFind=FindFirstFile(filename,&fdFindData);
delete[] filename;
done=hFind!=INVALID_HANDLE_VALUE;
while(done)
{
if(strcmp(fdFindData.cFileName,".") && strcmp(fdFindData.cFileName,".."))
{
filename=new char[strlen(directory)+strlen(fdFindData.cFileName)+2];
strcpy(filename,directory);
strcat(filename,"\\");
strcat(filename,fdFindData.cFileName);
if((fdFindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)==FILE_ATTRIBUTE_DIRECTORY) {
viewfiles(filename);
} else {
cout << "文件名:" << filename << endl;
cnt++;
}
delete[] filename;
}
done=FindNextFile(hFind,&fdFindData);
}
FindClose(hFind);
}
int main() {
cout << "輸入索引名稱:" << endl;
char directory[MAX_PATH];
gets(directory);
cout << endl;
clock_t start_time=clock();
viewfiles(directory);
cout << endl;
printf("\n----------\n遍歷完畢!\n統計數據:\n共遍歷文件:%ld個\n共用時%.2lf秒\n平均速度:%.2lf個文件/秒\n----------\n", cnt, (double)(clock()-start_time)*1.0/CLOCKS_PER_SEC, cnt / ((double)(clock()-start_time)*1.0/CLOCKS_PER_SEC));
cin.clear();
system("pause");
return 0;
}
本文爲作者原創,如果喜歡,請點個贊,謝謝!