實現說明- 仍然是基於對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...