用VisualC++6.0遞迴查詢目錄樹 (轉)

worldblog發表於2007-12-04
用VisualC++6.0遞迴查詢目錄樹 (轉)[@more@]

用VisualC++6.0遞迴查詢目錄樹

北京資訊工程學院
馬文曉

---- 在SDI專案內,透過使用CFileDialog和CFileFind類,不僅可以實現桌面上現有的查詢功能,而且可以靈活擴充套件查詢條件.例如,下面的將在VisualC++6.0的Output視窗內逐行輸出c:windows下所有長度小於500位元組的只讀:

#include /*含有 _getcwd,_chdir原型*/ void f0(){ char x[256],y[256]; CFileDialog fd(TRUE); /*用TRUE值構造"File Open"對話方塊*/ _getcwd(x,256); /* 當前工作目錄存入x陣列*/ if (fd.odal()==IDOK){ /*在CfileDialog對話過程中, 先選定c:windows目錄, 再選定其下一普通檔案,如Notepad.exe, 或輸入一不存在的檔案,如f0.non*/ _getcwd(y,256); /*當前工作目錄c:windows存入y陣列*/ f1(y); /*用y內容f1*/ } _chdir(x); /*當前工作目錄置回x內容*/ } void f1(CString x){ BOOL b;CFileFind f; /*考慮到遞迴,只能使用區域性變數*/ _chdir(x); b=f.FindFile("*.*"); /*當前工作目錄置成實參x, 然後查其下所有檔案*/ while(b){ b=f.FindNextFile(); if (f.IsDirectory()){ /*當前檔案是目錄*/ if (!f.IsDots()) { f1(f.GetFilePath()); /*目錄檔案非"."和"..", 則用全路徑呼叫自身*/ } } else if (f.IsReadOnly()&&f.GetLength ()<500){ afxDump< < "n"; afxDump< < f.GetFilePath(); /*輸出長度小於500位元組的只讀檔案的檔案*/ } } }

---- 待程式正常結束後,Output視窗將顯示結果.另外,經用CmemoryState類檢查,已證明此段程式未導致洩漏.



 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987968/,如需轉載,請註明出處,否則將追究法律責任。

相關文章