Feedback

Ordner und Dateien rekursiv durchlaufen

Sprache: C#

using System.IO;
        public void dirSearch(string strDir)
        {
            try
            {
                foreach (string strDirectory in Directory.GetDirectories(strDir))
                {
                    foreach (string strFile in Directory.GetFiles(strDirectory))
                    {
			// mach etwas....
                    }

                    dirSearch(strDirectory);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public void dirSearch(string strDir)
        {
            try
            {
                foreach (string strDirectory in Directory.GetDirectories(strDir))
                {
                    foreach (string strFile in Directory.GetFiles(strDirectory))
                    {
			// mach etwas....
                    }

                    dirSearch(strDirectory);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

2 Kommentare

  1. Bei dieser Methode fehlen alle Dateien im ersten Ordner (strDir).
    Damit auch die Dateien in der ersten Ebene gefunden werden, sollte
    es eher so aussehen:
    [code]
    public void dirSearch(string strDir)
    {
    try
    {
    foreach (string strFile in Directory.GetFiles(strDir))
    {
    //mach was..
    }

    foreach (string strDirectory in Directory.GetDirectories(strDir))
    {
    dirSearch(strDirectory);
    }
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }
    }
    [/code]

  2. M. Dauskardts Ansatz ist durchaus sinnvoller, wobei ich auf das Try..Catch verzichten würde. Sollte es wirklich von Nöten sein, halte ich es innerhalb der GetFiles-For..Each-Schleife für angebrachter.