2011-09-19 36 views
8

我曾與一個名爲如何檢查文件名包含在C#中的子

  1. myfileone
  2. myfiletwo
  3. myfilethree

文件的文件夾我如何檢查文件 「myfilethree」 是當下。

我的意思是除IsFileExist()方法外,還有另一種方法,即像filename包含子字符串「three」?

+2

如果你有一個可行的解決方案(即'File.Exists'),你能解釋更多關於你想要做什麼,導致你需要一個替代解決方案嗎? –

回答

16

字符串:

bool contains = Directory.EnumerateFiles(path).Any(f => f.Contains("three")); 

不區分大小寫字符串:

bool contains = Directory.EnumerateFiles(path).Any(f => f.IndexOf("three", StringComparison.OrdinalIgnoreCase) > 0); 

區分大小寫的比較:

bool contains = Directory.EnumerateFiles(path).Any(f => String.Equals(f, "myfilethree", StringComparison.OrdinalIgnoreCase)); 

獲取文件名匹配通配符標準:

IEnumerable<string> files = Directory.EnumerateFiles(path, "three*.*"); // lazy file system lookup 

string[] files = Directory.GetFiles(path, "three*.*"); // not lazy 
+0

這工作。由於Abatischev – sreeprasad

+0

@SREEPRASADGOVINDANKUTTY很高興幫助:) – abatishchev

+0

很好的答案,但我怎麼會這樣做2列表?我有一個列表,我想比較一下。 – Robula

3

如果我正確理解你的問題,你可以不喜歡

Directory.GetFiles(directoryPath, "*three*")

Directory.GetFiles(directoryPath).Where(f => f.Contains("three"))

東西這兩會給你的所有文件的所有名稱與three在它。

0

我不熟悉IO,但也許這會工作?需要using System.Linq

System.IO.Directory.GetFiles("PATH").Where(s => s.Contains("three")); 

編輯:請注意,這將返回字符串數組。

相關問題