0

I am trying to make some code to count all text files in a directory and its sub directories. I have tried below code:

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");
    }
}
Myrtle
  • 5,761
  • 33
  • 47

3 Answers3

3

To search TXT files in folder AND it's subdirectories, use:

string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.txt", SearchOption.AllDirectories);
Maciej Jureczko
  • 1,560
  • 6
  • 19
  • 23
1

There is no need to loop through directories. There is already a .NET facility to perform this action.

To get a list of files with a certain extension including sub directories, use,

var files = Directory.EnumerateFiles(srcDir, "*.txt", SearchOption.AllDirectories);
Kami
  • 19,134
  • 4
  • 51
  • 63
0
FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
    int fileCount = GetFileCount(folderBrowserDialog1.SelectedPath);        
}

Get text file count from parent and all sub-directories recursively,

private int GetFileCount(string s)
{
    return Directory.GetFiles(s, "*.txt").Count() + Directory.GetDirectories(s).Select(GetFileCount).Sum();
}
Hossain Muctadir
  • 3,546
  • 1
  • 19
  • 33