Laden...

Unterordner rekursiv durchlaufen, aber nur bis zur einer bestimmten Tiefe

Erstellt von elbardoni vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.833 Views
E
elbardoni Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren
Unterordner rekursiv durchlaufen, aber nur bis zur einer bestimmten Tiefe

Guten Tag,

Mein Programm soll mit der Möglichkeit der Angabe der Tiefe der Unterordner ab ein bestimmten Verzeichnis rekursiv suchen.
Es soll die Möglichkeit gegeben werden entweder alle Unterordner rekursiv zu durchlaufen oder halt bis zur einer bestimmten Tiefe.

Hier für habe ich eine Funktion geschrieben, dass mir den gewünschten Verzeichnis setzt

  //Das Verzeichnis wird gesetzt
       public string setVerzeichnis()
        {
            DialogResult mm_res = verzeichnisBrowser.ShowDialog();
            if (mm_res == DialogResult.OK)
            {
                tbStartpfad.Text = verzeichnisBrowser.SelectedPath;
            }
            verzeichnisBrowser.SelectedPath = tbStartpfad.Text;
            return tbStartpfad.Text;
        }

und die Suche selber


//Variable für den Ordner im gewählten Pfad bzw. Verzeichnis
            DirectoryInfo m_di = new DirectoryInfo(Verzeichnis);

    //Rekursive Suche
            if ((ucSuche1.gewählteSuchOption.Rekursiv == true) && (ucSuche1.gewählteSuchOption.alleUnterordner == true))
            {
                DirectoryInfo[] m_subdirs = m_di.GetDirectories();
                
                for (int i = 0; i < m_subdirs.Length; ++i)
                {
                    //Rekursiver Aufruf der Funktion
                    Suche(m_subdirs[i].FullName);
                }
            }
            else
            {
                if (ucSuche1.gewählteSuchOption.Rekursiv == true)
                {
                    DirectoryInfo[] m_subdirs = m_di.GetDirectories();
                    for (int i = 0; i < ucSuche1.gewählteSuchOption.Rekursivzahl; ++i)
                    {
                        //            if (m_subdirs.Length > ucSuche1.gewählteSuchOption.Rekursivzahl)
                        {
                            //Rekursiver Aufruf der Funktion
                            Suche(m_subdirs[i].FullName);
                        }
                    }                  
                }
            }

Die "normale" rekursive Suche funktioniert, aber ich weis nicht wie ich es mit der Tiefe machen soll.
Ich brauche unbedingt Hilfe.

Ich bin für jede Hilfe echt dankbar.

64 Beiträge seit 2012
vor 9 Jahren
  1. Benutze bitte die Code Tags => [Hinweis] Wie poste ich richtig? Punkt 6.
  2. Du kannst deiner "Suche" Funktion einen Parameter "Tiefe" und "Maximale Tiefe" mitgeben und dann in der Funktion prüfen ob die Maximale Tiefe erreicht wurde. Bei jedem Rekursiven Aufruf musst du natürlich die Tiefe um 1 erhöhen.

++Rekursion ++
(lat. , die) siehe Rekursion

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo elbardoni,

auch wenn es schon gelöst ist:

[Tutorial] Bäume durchlaufen mit Rekursion (und Alternativen)
[Snippet] Verzeichnisse und Dateien rekursiv durchlaufen

und

[Tipp] Anfängerfehler == true / == false

Das mit der Tiefe löst du wie EifelYeti schon sagte: Gib ein int mit, prüfe das ab und brich entsprechend ab.

Gruss

Coffeebean

E
elbardoni Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren

Ihr seit Klasse
Vielen lieben Dank.