2011-03-09 102 views

回答

3

您可以使用Directory.GetFiles()列出特定目錄中的所有文件。第二個參數是要搜索的模式(其中包含通配符)。像這樣的東西應該這樣做:

var hasBak = Directory.GetFiles(yourdir, "*.bak").Length > 0; 
1

那麼,你可以用Directory.GetFiles(directory. "*.bak")來得到bak文件的列表,然後檢查長度是否爲0。

if (Directory.GetFiles(directory, "*.bak").Length == 0) 
{ 
    // Complain to the user or whatever you want to do 
} 
1
public bool IsAtleastOneFilePresent() 
{ 
    string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.bak"); 
    if(filePaths.Length > 0) return true; else return false; 
} 
1
string[] files = Directory.GetFiles(@"c:\SomeDirectory\", "*.bak"); 

,並確保files.Length> 0

2

Directory.GetFiles是正確的,但不是最好的解決辦法,如果你使用的是C#4.0,因爲我們有:

bool exist = Directory.EnumerateFiles(@"C:\mydir", "*.bak").Any(); 

Directory.GetFiles回報所有匹配的文件,你可以檢查Length屬性。但是當我們調用AnyDirectory.EnumerateFiles時,基本上我們得到它的枚舉器和MoveNext,該方法在我們找到任何項時立即返回(這樣我們就不需要遍歷所有文件)。我查了一下他們的實現和測試用:

Directory.EnumerateFiles(@"C:\Windows", "*.log").Any(); 

GetFiles成本比EnumerateFiles 4倍時間(運行它們10000次,StopWatch測量)。

相關問題