c++對檔案進行操作之遍歷雙層檔案結構
阿新 • • 發佈:2018-11-19
/*本程式碼實現遍歷雙層次層次的目錄結構*/ #include<stdio.h> #include<iostream> #include<io.h> #include<cstring> using namespace std; const char path[100]="F:/OCR/*"; int main() { struct _finddata_t fileinfo; char rootname[100]; long handle; handle=_findfirst(path,&fileinfo); if(handle==-1) { cout<<"檔案路徑錯誤..."<<endl; return 0; } else { do{ if((fileinfo.attrib & _A_SUBDIR) && (strcmp(fileinfo.name,".")!=0) && (strcmp(fileinfo.name,"..")!=0) ) //用來判斷一個檔案是不是資料夾 { int num=0; long subhandle;//子資料夾的控制代碼 char subpath[100];//子資料夾的路徑 strcpy(subpath,path); subpath[strlen(path)-1]='\0'; //把path中的*去掉 strcat(subpath,fileinfo.name); strcat(subpath,"/*"); //生成新的子路徑 struct _finddata_t subinfo;//子資料夾下用來遍歷的結構體 subhandle=_findfirst(subpath,&subinfo); if(subhandle==-1) { cout<<"子檔案"<<fileinfo.name<<"開啟失敗"<<endl; }else { do{ num++; cout<<subinfo.name<<endl; }while(_findnext(subhandle,&subinfo)==0); _findclose(subhandle); cout<<"如上所示檔案"<<fileinfo.name<<"共有"<<num-2<<"個檔案"<<endl<<endl;/*因為我在 遍歷子資料夾的時候沒有去判斷 .和..這兩種特殊檔案,原諒我有點偷懶了*/ } } else { if(!fileinfo.attrib & _A_SUBDIR) cout<<fileinfo.name<<endl; } }while(_findnext(handle,&fileinfo)==0); _findclose(handle); } return 0; }