جستجو در تمام پوشه ها و زیر پوشه های یک درایو

فرض کنید که می خواهید لیست تمامی فایل های با پسوند mp3 را در تمام پوشه ها و زیر پوشه های یک ((درایو)) و یا زیر پوشه های یک ((پوشه)) به دست آورید. برای این کار یک ListBox و یک دکمه بر روی فرم قرار داده و کدهای زیر را بنویسید :

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;

namespace SearchMp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
		
	private List<string> GetAllFiles(string sDir)
        {
            List<string> files = new List<string>();

            try
            {
                foreach (string f in Directory.GetFiles(sDir))
                {
                    files.Add(f);
                }

                foreach (string d in Directory.GetDirectories(sDir))
                {
                    files.AddRange(GetAllFiles(d));
                }
            }
            catch (System.Exception)
            {
            }
            return files;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.listBox1.Items.Clear();

            FolderBrowserDialog dialog = new FolderBrowserDialog();

            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                DirectoryInfo CurrentDirectoryInfo = new DirectoryInfo(dialog.SelectedPath);
                List<string> allFiles = GetAllFiles(CurrentDirectoryInfo.FullName);
                for (int i = 0; i < allFiles.Count; i++)
                {
                    if (allFiles[i].Substring(allFiles[i].Length - 4).ToLower() == ".mp3")
                    {
                        this.listBox1.Items.Add(allFiles[i]);
                    }                 
                }
            }
        }
    }
}