2013-10-03 5 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); 
Смежные вопросы