2013-10-03 56 views
0

我想使一些代碼來計算目錄及其子目錄中的所有文本文件。我曾嘗試下面的代碼:遞歸地查找目錄中的文本文件的計數

private void button1_Click_1(object sender, EventArgs e) 
{ 
    FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog(); 
    DialogResult result = folderBrowserDialog1.ShowDialog(); 
    if (result == DialogResult.OK) 
    { 
     string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath); 
     MessageBox.Show("Files found: " + files.Length.ToString(), "Message"); 
    } 
} 
+3

http://stackoverflow.com/a/27584/181771 – DaveDev

+1

什麼問題? –

回答

0
FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog(); 
DialogResult result = folderBrowserDialog1.ShowDialog(); 
if (result == DialogResult.OK) 
{ 
    int fileCount = GetFileCount(folderBrowserDialog1.SelectedPath);   
} 

從父母和遞歸所有子目錄獲取文本文件數,

private int GetFileCount(string s) 
{ 
    return Directory.GetFiles(s, "*.txt").Count() + Directory.GetDirectories(s).Select(GetFileCount).Sum(); 
} 
+0

良好的遞歸小函數,但已經有了'GetFiles()'的第三個重載,它允許搜索子目錄。 – Kami

+0

我剛剛注意到其他答案。 :) – Muctadir

3

要搜索的文件夾TXT文件和它的子目錄,用途:

string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.txt", SearchOption.AllDirectories); 
+0

謝謝..現在我可以過濾文本文件.. – samrockz

1

不需要循環目錄。已經有一個.NET工具來執行此操作。

要獲得文件列表有一定的延伸,包括子目錄,使用,

var files = Directory.EnumerateFiles(srcDir, "*.txt", SearchOption.AllDirectories); 
相關問題