2013-10-03 58 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); 
相关问题