如何找目錄及其子目錄底下的檔案 |
尚未結案
|
a120803
初階會員 發表:61 回覆:66 積分:25 註冊:2003-03-12 發送簡訊給我 |
|
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
|
limeca
中階會員 發表:2 回覆:74 積分:60 註冊:2005-05-11 發送簡訊給我 |
|
a120803
初階會員 發表:61 回覆:66 積分:25 註冊:2003-03-12 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
a120803 您好: 您可以將找尋檔案的動作寫成一個自定函式,並以要找尋內容的目錄為傳入參數,並且在碰到目錄時以遞迴的方式來呼叫相同函式,這樣子就可以找出指定目錄內的所有目錄與檔案了。 以下給您一個範例,這是從我的程式中節錄出來的,這個自定函式是計算指定目錄內的檔案數量,您可以視需要自行更改成您所要的功能: 呼叫方式:
int dcnt = CalcDirs("C:\\BCB"); // 取得 C:\BCB 目錄下的檔案數量
自定函式內容:
int __fastcall TaskReadDirTree::CalcDirs(AnsiString RootDir) { int tmpcnt = 0; chdir(RootDir.c_str()); // 切換到指定目錄去 TSearchRec Sr; // 設 Sr 為存放檔案資訊的結構變數 int done = FindFirst("*.*", faDirectory, Sr); while(done == 0){ if(Sr.Attr & faDirectory){ // 如果是目錄 if(Sr.Name != "." && Sr.Name != ".."){ // 如果不是相對目錄代碼的話 tmpcnt ; TotalDirs ; int aa = CalcDirs(Sr.Name.c_str()); // 如果是目錄的話就遞迴處理 tmpcnt = aa; chdir(String("..").c_str()); // 切換回前一層目錄 } }else{ // 如果是檔案 (檔案的相關資訊可由 Sr 結構變數中取得) TotalFiles ; } done = FindNext(Sr); } FindClose(Sr); return tmpcnt; }7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/06/17 08:59:50 |
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
給你一個利用FindFirstFile和FindNextFile列出檔案名稱(包含子目錄)的範例.
#include |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |