編寫程式遍歷資料夾及其子資料夾下所有檔案,並輸出到標準輸出流或者檔案流。
1. 先考慮在單層目錄下,遍歷所有檔案。以c:\windows為例:
用到資料結構_finddata_t,檔案資訊結構體的指標。
struct _finddata_t檔案屬性是無符號整數,取值為相應的巨集:_a_arch(存檔),_a_subdir(資料夾),_a_hidden(隱藏),_a_system(系統),_a_normal(正常),_a_rdonly(唯讀)。容易看出,通過這個結構體,我們可以得到關於該檔案的很多資訊。結合以下函式,我們可以將檔案資訊儲存到這個結構體中:;
//_findfirst 函式返回的是匹配到檔案的控制代碼,資料型別為long。遍歷過程可以指定檔案型別,這通過filename的賦值來實現,例如要遍歷c:\windows下的所有.exe檔案按filename命名規則匹配當前目錄第乙個檔案
_findfirst(_in_ const
char * filename, _out_ struct _finddata64i32_t * _finddata);
//按filename命名規則匹配當前目錄下乙個檔案
_findnext(_in_ intptr_t _findhandle, _out_ struct _finddata64i32_t * _finddata);
//關閉_findfirst返回的檔案控制代碼
_findclose(_in_ intptr_t _findhandle);
view code
bool transfer(string filename = "2. 遍歷資料夾及其子資料夾下所有檔案。作業系統中資料夾目錄是樹狀結構,使用深度搜尋策略遍歷所有檔案。用到_a_subdir屬性,可執行程式如下:c:\\windows\\*.exe
", int exenum = 0)
do
view code
void dfsfolder(string folderpath, ofstream &fout)do}在判斷有無子目錄的if分支中,由於系統在進入乙個子目錄時,匹配到的頭兩個檔案(夾)是"."(當前目錄),".."(上一層目錄)。需要忽略掉這兩種情況。當需要對遍歷到的檔案做處理時,在else分支中新增相應的**就好else
}while (_findnext(handle, &fileinfo) == 0);
_findclose(handle);
fout.close();
}
C 下遍歷資料夾
編寫程式遍歷資料夾及其子資料夾下所有檔案,並輸出到標準輸出流或者檔案流。1.先考慮在單層目錄下,遍歷所有檔案。以c windows為例 用到資料結構 finddata t,檔案資訊結構體的指標。struct finddata t 檔案屬性是無符號整數,取值為相應的巨集 a arch 存檔 a sub...
C 下遍歷資料夾
編寫程式遍歷資料夾及其子資料夾下所有檔案,並輸出到標準輸出流或者檔案流。1.先考慮在單層目錄下,遍歷所有檔案。以c windows為例 用到資料結構 finddata t,檔案資訊結構體的指標。struct finddata t 檔案屬性是無符號整數,取值為相應的巨集 a arch 存檔 a sub...
c 遍歷資料夾深度 C 遍歷資料夾獲取資料夾大小
c 遍歷資料夾獲取資料夾大小 都需要引入system.io這個命名空間 第一種方法 public static long getdirectorylength string dirpath 判斷給定的路徑是否存在,如果不存在則退出 if directory.exists dirpath return...