c++ 遍歷資料夾

xdliunian發表於2013-01-12
Link:http://www.cnblogs.com/summerRQ/articles/2375749.html
編寫程式遍歷資料夾及其子資料夾下所有檔案,並輸出到標準輸出流或者檔案流。
1. 先考慮在單層目錄下,遍歷所有檔案。以C:\WINDOWS為例:
用到資料結構_finddata_t,檔案資訊結構體的指標。

C++程式碼 複製程式碼 收藏程式碼


檔案屬性是無符號整數,取值為相應的巨集:_A_ARCH(存檔),_A_SUBDIR(資料夾),_A_HIDDEN(隱藏),_A_SYSTEM(系統),_A_NORMAL(正常),_A_RDONLY(只讀)。容易看出,通過這個結構體,我們可以得到關於該檔案的很多資訊。結合以下函式,我們可以將檔案資訊儲存到這個結構體中:
C++程式碼 複製程式碼 收藏程式碼

_findfirst 函式返回的是匹配到檔案的控制程式碼,資料型別為long。遍歷過程可以指定檔案型別,這通過FileName的賦值來實現,例如要遍歷C:\WINDOWS下的所有.exe檔案
C++程式碼 複製程式碼 收藏程式碼


2. 遍歷資料夾及其子資料夾下所有檔案。作業系統中資料夾目錄是樹狀結構,使用深度搜尋策略遍歷所有檔案。用到_A_SUBDIR屬性,可執行程式如下:
C++程式碼 複製程式碼 收藏程式碼

在判斷有無子目錄的if分支中,由於系統在進入一個子目錄時,匹配到的頭兩個檔案(夾)是"."(當前目錄),".."(上一層目錄)。需要忽略掉這兩種情況。當需要對遍歷到的檔案做處理時,在else分支中新增相應的程式碼就好

相關文章