如何用Delphi實現(xiàn)子目錄級的文件查詢

字號:

在應(yīng)用實踐中,我們經(jīng)常會用到文件查詢功能。通過Win95中提供的查找功能,我們可以方便的找出磁盤上任何子目錄下的文件,其原因是該查找功能可以遍歷指定目錄下的所有子目錄中的文件。從編程角度講,它實現(xiàn)了子目錄級的文件查詢。其實,這項功能并不難實現(xiàn),關(guān)鍵是能理解并掌握懙莨閽這種程序設(shè)計思路。本人用Delphi實現(xiàn)了該項功能(任意子目錄級),由于使用了懙莨閽,程序思路清晰,代碼量小。
    實現(xiàn)方法:
    1. 獲取當(dāng)前目錄下的所有下一級子目錄。
    2. 存入字符串列表中(Tstrings)。
    其中,用到了幾個API函數(shù)。
    FindFirst 是找出指定目錄下第一個文件或目錄。
    FindNext 一般和FindFirst配合使用,用來找出下一個文件或目錄。
    FindClose 用來關(guān)閉查詢。
    (以上函數(shù)Delphi在線幫助中有詳盡解釋,在此不贅述);
    3. 用FileExists函數(shù)查找當(dāng)前目錄,
    4. 尋找是否有滿足條件的文件存在,
    5. 依次使各個子目錄成為當(dāng)前目錄,
    6. 遞歸調(diào)用本函數(shù),
    7. 釋放資源,
    8. 返回查詢結(jié)果。  
    代碼如下:
    1.從搜索記錄中判斷是否是子目錄。
    function IsValidDir(SearchRec:TSearchRec):Boolean;
    begin
    if (SearchRec.Attr=16) and
    (SearchRec.Name<>'.') and
    (SearchRec.Name<>'..') then
    Result:=True
    else
    Result:=False;
    end;