C 遞迴搜尋指定目錄下的檔案或目錄

2021-09-07 15:46:26 字數 2299 閱讀 7101

實現說明- 仍然是基於對directory類的幾個方法的封裝進行實現,只是沒有使用它們的searchpattern和searchoption功能

- 將匹配模式由windows的萬用字元?、*改為正則匹配。一是讓匹配更強大,二是要實現?*匹配還得做額外工作,沒必要

匹配模式並沒有預設新增首尾限定^$,即「abc"將會匹配所有包含該字串的專案,所以如果你要匹配首尾,請自行新增^$

忽略大小寫匹配

如果不想搜尋指定專案而是全部,請將regexpattern引數設為null,而不是.*,前者效能更好

- 可通過設定recurse和throwex引數決定是否遞迴搜尋,和是否拋異常。預設是不遞迴,不拋異常

- 遇到不可訪問的目錄會跳過。當然前提是throwex=false

- 之所以在foreach外層再套一層try-catch,是因為如果指定的dir就是不可訪問的目錄,那也可以避免異常

- 之所以為獲取項、獲取檔案、獲取目錄分別實現3個方法,而不是只實現乙個獲取項,另外兩個過載,是因為只實現乙個的話,foreach中要做的邏輯判斷不少,考慮到方法是要遞迴的,所以迴圈中邏輯越少越好

- 之所以不做dir引數合法性檢查,原因同上,判斷越少越好。所以請使用者呼叫前自行確保dir合法不廢話,上**:

1

///2

///獲取指定目錄中的匹配項(檔案或目錄)

3///

4///

要搜尋的目錄

5///

項名模式(正則)。null表示忽略模式匹配,返回所有項

6///

是否搜尋子目錄

7///

是否拋異常

8///

9public

static

string getfilesystementries(string dir, string regexpattern, bool recurse, bool

throwex)

1021

22//

遞迴23

if (recurse && (file.getattributes(item) & fileattributes.directory) ==fileattributes.directory)

2425}26

catch }27}

28}29catch }

3031

return

lst.toarray();32}

3334

///35

///獲取指定目錄中的匹配檔案

36///

37///

要搜尋的目錄

38///

檔名模式(正則)。null表示忽略模式匹配,返回所有檔案

39///

是否搜尋子目錄

40///

是否拋異常

41///

42public

static

string getfiles(string dir, string regexpattern, bool recurse, bool

throwex)

4356

57//

遞迴58

if (recurse && !isfile) 59}

60catch }61}

62}63catch }

6465

return

lst.toarray();66}

6768

///69

///獲取指定目錄中的匹配目錄

70///

71///

要搜尋的目錄

72///

目錄名模式(正則)。null表示忽略模式匹配,返回所有目錄

73///

是否搜尋子目錄

74///

是否拋異常

75///

76public

static

string getdirectories(string dir, string regexpattern, bool recurse, bool

throwex)

7788

89//

遞迴90

if(recurse) 91}

92catch }93}

94}95catch }

9697

return

lst.toarray();

98 }

指定檔案目錄下 遞迴只拷貝檔案到指定目錄

public static void main string args public final static string linux linux public final static string linux windows 讀取源檔案目錄 讀取全部檔案 存放在list裡面 param sou...

c 指定目錄下的檔案遍歷

要實現指定目錄下檔案的遍歷需要執行一下的部分 第一步獲取當前路徑的名字 max path是在windows定義的所有的路徑名字不超過其,呼叫該函式會使得得到當前的目錄 include char buff max path getcurrentdirectory max path,buff 接下來我們...

pyhon搜尋目錄下的檔案或資料夾

pyhon搜尋目錄下的檔案或資料夾 import os import subprocess class cfileinfo object def int self self.filetype 0 0 dir 1 file self.filename self.filesize 0 byte if d...