為數不多的好用的代碼,遍歷文件夾獲取所有子文件名,"filespec"可用通配符“*?”。注意如果用相對路徑的話,獲取所有文件名后應再調用SetInitDir將初始目錄改為當前目錄,否則中間生成的文件都會放在之前的“InitDir”內。
C/C++遍歷文件夾感覺真是很不好用,建議還是使用C/C++做單任務處理,然后通過腳本語言實現遍歷比較合理。
CBrowseDir.h
#include <io.h> #include <stdlib.h> #include <direct.h> #include <iostream> #include <string> #include <vector> using namespace std; class CBrowseDir { protected: //存放初始目錄的絕對路徑,以'\'結尾 char m_szInitDir[_MAX_PATH]; public: //缺省構造器 CBrowseDir(); //設置初始目錄為dir,如果返回false,表示目錄不可用 bool SetInitDir(const char *dir); //開始遍歷初始目錄及其子目錄下由filespec指定類型的文件 //filespec可以使用通配符 * ?,不能包含路徑。 //如果返回false,表示遍歷過程被用戶中止 bool BeginBrowse(const char *filespec); vector<string> BeginBrowseFilenames(const char *filespec); protected: //遍歷目錄dir下由filespec指定的文件 //對于子目錄,采用迭代的方法 //如果返回false,表示中止遍歷文件 bool BrowseDir(const char *dir,const char *filespec); vector<string> GetDirFilenames(const char *dir,const char *filespec); //函數BrowseDir每找到一個文件,就調用ProcessFile //并把文件名作為參數傳遞過去 //如果返回false,表示中止遍歷文件 //用戶可以覆寫該函數,加入自己的處理代碼 virtual bool ProcessFile(const char *filename); //函數BrowseDir每進入一個目錄,就調用ProcessDir //并把正在處理的目錄名及上一級目錄名作為參數傳遞過去 //如果正在處理的是初始目錄,則parentdir=NULL //用戶可以覆寫該函數,加入自己的處理代碼 //比如用戶可以在這里統計子目錄的個數 virtual void ProcessDir(const char *currentdir,const char *parentdir); };
另外有需要云服務器可以了解下創新互聯建站vcdvsql.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文題目:C++遍歷文件夾下所有文件的多種方法-創新互聯
鏈接分享:http://vcdvsql.cn/article18/hoigp.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、微信小程序、面包屑導航、移動網站建設、標簽優化、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯