Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » C# Unterordner miteinbeziehen » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 5 Beiträge
eulerscheZahl

Hoppla, da steht's ja smile
Airblader

@ "Mein Compiler kennt getElements nicht": Ich habe ja auch gesagt, dass es Pseudo-Code ist. Augenzwinkern
eulerscheZahl

Das verlinkte Beispiel funktioniert nicht immer:
Zitat:
System.UnauthorizedAccessException wurde nicht behandelt.
Message=Der Zugriff auf den Pfad "F:\Documents and Settings" wurde verweigert. [...]

unter Verwendung von try wird komplett abgebrochen.

Mein Compiler kennt die Funktion getElements(dir) nicht.

mein Vorschlag (sehr ähnlich)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
using System.Collections.Generic;
using System.IO;
//...

        private void button1_Click(object sender, EventArgs e)
        {
            List<string> dateien = new List<string>();
            DurchsucheOrdner("F:\\Screenshots\\", ".png", ref dateien);
            foreach (string s in dateien)
                richTextBox1.AppendText(s + "\n");
        }

        private void DurchsucheOrdner(string pfad, string endung, ref List<string> liste)
        {
            try
            {
                DirectoryInfo di = new DirectoryInfo(pfad);
                DirectoryInfo[] directories = di.GetDirectories();

                FileInfo[] files = di.GetFiles();

                foreach (DirectoryInfo dir in directories)
                    DurchsucheOrdner(pfad + dir.Name + "\\", endung, ref liste);

                foreach (FileInfo file in files)
                    if (file.Name.EndsWith(endung))
                        liste.Add(pfad + file.Name);
            }
            catch (Exception)
            { }
        }
Airblader

Im ersten Ansatz ist sowas ein Rekursionsproblem, d.h. man durchsucht alle Elemente des Ordners. Ist das aktuelle Element ein Ordner, so ruft man die Funktion wiederum für diesen Ordner auf. In Pseudo-Code sieht das so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public string[] findMusicFiles( string dir ) {
    string[] result;

    foreach( string element in Directory.getElements( dir ) ) {
        if( Directory.isDirectory( element ) {
            result.append( findMusicFiles( element ) );
        } else if( element.toLower().endsWith( ".mp3" ) ) {
            result.append( element );
        }
    }

    return result;
}


Allerdings ist es sprachenabhängig sehr gut möglich, dass man sich sowas sparen kann. In diesem Fall hilft meist schon eine kurze Google-Suche, um z.B. sowas zu finden. Einfach mal ausprobieren, ich habe leider keinen C#-Compiler installiert. Augenzwinkern
InformaTiger C# Unterordner miteinbeziehen

Hallo,
ich möchte bei folgendem Code gerne die Unterordner miteinbeziehen, wie kann ich das machen?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
folderBrowserDialogMusik = new FolderBrowserDialog();

if (folderBrowserDialogMusik.ShowDialog() == DialogResult.OK)
{
         aPfad = folderBrowserDialogMusik.SelectedPath;
}

// Holt die mp3 Dateien aus dem Ordner
string[] aDateien = Directory.GetFiles(aPfad);
foreach (string aDatei in aDateien)
{
         if (aDatei.ToLower().EndsWith(".mp3"))
         {
                  aAlleMusikdateien[aCounter] = aDatei;
                  aCounter++; // ist eine am Programmbeginn deklarierte Variable
         }
}


Danke.

Lg
InformaTiger