[英]How can i get all files on disk with a specific extension using 'Directory.getFiles' and save them in a list
[英]Get files with no specific word in the name using Directory.GetFiles
我需要獲取所有不包含上載單詞的文件。 這是我嘗試過的方法,但是沒有用。
string[] fileList = Directory.GetFiles(@"F:\Reports", @"*[^upload].xls")
foreach (string file in fileList)
{
Console.WriteLine(file);
}
任何幫助將不勝感激。
Directory.GetFiles
不支持正則表達式。 相反,您可以使用Linq
Where
方法來過濾結果,例如:
string[] fileList = Directory.GetFiles(@"F:\Reports", @"*.xls");
foreach (string file in fileList.Where(f => !f.Contains("upload"))
{
Console.WriteLine(file);
}
請參閱GetFiles
文檔 :
searchPattern
Type: System.String
與路徑中文件名匹配的搜索字符串 。 此參數可以包含有效的文字路徑和通配符(*
和?
)字符的組合(請參閱備注),但不支持正則表達式 。
這是我的建議,可以獲取所有Excel文件,而不僅僅是那些舊的Excel * .xls文件,然后我使用Contains
過濾掉不需要的條目:
var fileList = Directory.GetFiles(@"F:\Reports", @"*.xls*")
foreach (var file in fileList)
{
if (!file.ToLower().Contains("upload".ToLower()))
Console.WriteLine(file);
}
如果您只需要過濾upload
和不uploading
的文件,則可以使用Regex
:
if (!Regex.IsMatch(file, @"(?i)\bupload\b"))
其中\\b
代表單詞邊界, (?i)
代表不區分大小寫的匹配。
見另一IDEONE演示 (僅適用於文件名upload
濾出,在一個與uploading
保留)
[^upload]
是一個否定的字符類,它將匹配字符類中的字符以外的任何字符。 相反,您可以使用否定的前瞻 (?!upload)
。
查看@Avinash Raj的答案以獲取完整的正則表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.