沒事無聊寫著玩的,也就是熟練運用API而已,沒什麼技術可言... [cpp] #include <windows.h> #include <algorithm> #include <iostream> #include <iomanip> #include <fstream> #include <string> using namespace std; static int count=0; //記錄文件個數 void FindInAll(string & Path,fstream & outfile) { string szFind; szFind=Path; szFind+="*.*"; WIN32_FIND_DATA FindFileData;//WIN32_FIND_DATA結構包含文件的全部信息 HANDLE hFind=FindFirstFile(szFind.c_str(),& FindFileData);//FindFirstFile根據文件名查找文件 if(hFind==INVALID_HANDLE_VALUE) return; do { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果找到的是目錄,則進入此目錄進行遞歸 { string szFile; //去掉目錄中的.和..目錄 szFile=Path+FindFileData.cFileName+"\\"; string test=szFile.substr(szFile.length()-3,szFile.length()); if(test=="\\.\\"||test=="..\\") continue; FindInAll( szFile, outfile); } else //找到的是文件 { string szFile; szFile=Path+FindFileData.cFileName; outfile<<szFile<<endl; ::count=::count+1; } } while(FindNextFile(hFind,& FindFileData)); FindClose(hFind); } int main() { //用來記錄程序運行所花時間 clock_t start,finish; double totaltime; start=clock();//計時開始 cout<<"***********************************************************"<<endl; cout<<"---------------Created By Cryking 2012.11.02---------------"<<endl; cout<<"本程序自動遍歷電腦所有文件(包括隱藏文件),時間較長,請耐心等待..."<<endl; cout<<"***********************************************************"<<endl; fstream outfile("allfile.txt",ios::out); cout<<"----------------遍歷磁盤所有文件開始:-----------------------"<<endl; outfile<<setw(3)<<"------遍歷磁盤所有文件開始:-----------"<<endl; //遍歷整個電腦的磁盤 int DSLength = GetLogicalDriveStrings(0,NULL);//得到驅動器總長度 char * Path=new char[DSLength]; GetLogicalDriveStrings(DSLength,Path);//得到第一個驅動器地址信息 while(Path!=NULL) { //直接遍歷D盤所有文件 if((string)Path=="") //路徑出錯 break;//跳出循環 cout<<"正在遍歷"<<Path<<"盤文件,請等待..."<<endl; FindInAll((string)Path,outfile); Path=Path+strlen(Path)+1;//根據當前驅動器地址獲得下一個驅動器地址 } locale::global(locale("C")); finish=clock();//計時結束 totaltime=(double)(finish-start)/CLOCKS_PER_SEC; outfile<<setw(3)<<"------遍歷磁盤所有文件結束-----------"<<endl; outfile<<setw(3)<<"本次遍歷所花 outfile<<setw(3)<<"本電腦共有文件數:"<<::count<<endl; outfile<<setw(3)<<"------------遍歷完成---------------"<<endl; outfile.close(); cout<<"遍歷完成,請查看該目錄下的allfile.txt文件!"<<endl; system("pause"); return 0; } 程序運行的時間沒我想象的那麼慢,用了遞歸,而且所有文件路徑信息全寫到文件了(嘿嘿,貌似可以用來干些壞事··),運行完後文件大概有30M,如果用記事本打開的話有點慢,建議用UE打開,看看我的結果