Verzeichnis durchsuchen



  • Hi zusammen, ich will ein Verzeichnis durchsuchen und bestimmte Dateien in eine Arraylist schreiben. Ich hab dazu folgenden SourceCode geschrieben.

    private ArrayList FindFiles(DirectoryInfo baseDir)
            {
                ArrayList Files = new ArrayList();
                //Dateien suchen
                foreach (FileInfo theFile in baseDir.GetFiles("*.xml"))
                {
                    Files.Add(theFile);
                }
                return Files;
            }
    

    Aufruf der Funktion:

    ArrayList AL = new ArrayList();
                DirectoryInfo directory = new DirectoryInfo(".\\");
                AL = FindFiles(directory);
                int i = 0;
                foreach (object o in AL)
                {
                    listBox1.Items.Add(AL[i]);
                    i++;
                }
    

    So und der Aufruf gefällt mir absolut gar nicht. Funktionieren tut es so aber:
    1. Es kann doch nicht sein dass ich den Index in ner foreach selbst mitzählen muss, kann mir einer sagen wie ich AL[i] anders schreiben kann?
    2. für was leg ich ein object o an wenn ich es doch nicht verwende? wie kann ich auf den Inhalt dieses Objects zugreifen. Ich habe es schon mit unboxing versucht, aber da steckt ein FIleinfo object drin. Drum bekomm ich dann auch die Exception:

    Unable to cast object of type 'System.IO.FileInfo' to type 'System.String'.

    muss ich das object in ein Fileinfo object casten und dann in einen String?

    Wäre echt dankbar wenn jemand mir mal zeigt wie man schönen Code schreibt 😉



  • Wie wärs mit:

    foreach (FileInfo o in AL) {
      listBox1.Items.Add(o);
    }
    

    Macht nix anderes als Dein Code (dass o ein FileInfo ist und ne listBox vermutlich lieber Strings mag, bleibt, dann füg halt nicht das FileInfo Objekt der ListBox hinzu sondern eine Eigenschaft davon)



  • damit wäre es super! 😉
    Vielen Dank!
    Klar Listbox nimmt ja objects! Jetzt sieht es schön aus vielen Dank!


Anmelden zum Antworten