以递归方式查找目录中的文本文件数

时间:2013-10-03 13:20:13

标签: c#

我正在尝试制作一些代码来计算目录及其子目录中的所有文本文件。我试过下面的代码:

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 个答案:

答案 0 :(得分:3)

要搜索文件夹及其子目录中的 TXT 文件,请使用:

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

答案 1 :(得分:1)

无需遍历目录。已经有一个.NET工具来执行此操作。

要获取包含子目录的特定扩展名的文件列表,请使用

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

答案 2 :(得分: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();
}