Laden...

Dateien in einem Ordner?

Erstellt von Adler vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.964 Views
A
Adler Themenstarter:in
47 Beiträge seit 2004
vor 19 Jahren
Dateien in einem Ordner?

Hallo.

Ich möchte mir alle Dateien mit den Endungen .jpg .bmp .jpeg .gif zurückgeben lassen.
Das bekomm ich schon nicht hin, aber hinzu kommt noch, ich möchte auch noch die von den unterordnern haben.

EDIT:
Gegooglt hab ich schon, kam aber nie das ich wollte 😦

MfG Meine wenigkeit.
N
4.644 Beiträge seit 2004
vor 19 Jahren
string[] s  = Directory.GetFiles("C:\\temp", "*.xml");

Holt alle xml Dateien aus C:\temp.
Für alle Dateien in den Unterordnern, solltest Du mal nach Rekursion suchen.

E
171 Beiträge seit 2004
vor 19 Jahren

@Adler
man das fällt in die rekursive Programmierung !
hier ein ansatz ist nicht der beste schau mir aber mal
"rekursive Programmierung" an!
vieleicht hilft es dir!


            string fileName;
            string path = @"D:\WebArea\QuadOnly\TSystems";
            string extension;
            string subextension;

            DirectoryInfo di = new DirectoryInfo(path);

            FileInfo[] fiArr = di.GetFiles();
            DirectoryInfo[] diArr = di.GetDirectories();

                foreach (FileInfo fri in fiArr){    
                    fileName = path + @"\" + fri.Name;
                    
                    extension = Path.GetExtension(fri.Name);

                    if(extension == ".gif"){
                        Response.Write(fri.Name + "<br>");
                    }
                        if(extension == ".jpg"){
                            Response.Write(fri.Name + "<br>");
                        }
                            if (extension == ".bmp") {
                                Response.Write(fri.Name + "<br>");
                            }
                    }
                foreach (DirectoryInfo dri in diArr){
                        DirectoryInfo subdi = new DirectoryInfo(path + @"\"+dri.Name);
                        FileInfo[] subfiArr = subdi.GetFiles();
                        foreach (FileInfo subfri in subfiArr)
                        {
                            
                            subextension = Path.GetExtension(subfri.Name);
                            if (subextension == ".gif"){
                                Response.Write("&nbsp" + subfri.Name + "<br>");
                            }
                                if (subextension == ".jpg"){
                                    Response.Write("&nbsp" + subfri.Name + "<br>");
                                }
                                    if (subextension == ".bmp"){
                                        Response.Write("&nbsp" + subfri.Name + "<br>");
                                    }
                        }
                    }

Gruß
Elron

A
Adler Themenstarter:in
47 Beiträge seit 2004
vor 19 Jahren

Danke.
Also der Code sieht ja selbstverständlich aus.

Er listet alle Ordner und die Dateien mit bestimmten endungen auf, oder?
Das müsste ja soweit richtig sein.
Wenn ich in den Ordnern auch noch die Dateien haben möchte einfach dafür nochmal das gleiche, aber das bekomm ich schon hin.

Aber was muss ich da für ne Datei einbinden, als Header mein ich jetzt ...
Weil die meisten Variablen bzw. Klassennamen kennt er nicht, der compiler.

MfG Meine wenigkeit.
G
19 Beiträge seit 2004
vor 19 Jahren

using System.IO

E
171 Beiträge seit 2004
vor 19 Jahren

@Adler
so mein guter jetzt habe ich mich mit rekursion bzw. rekursiever Prog.
auseinandergesetzt!
ich kann nur sagen das es ganz schön komplex ist zum glück brauch man es
nicht wirklich oft! also nicht von der schreibw. sonder eher was da wirklich passiert!
es ist schon ressourcen fressend bei vielen Dateien bzw. Verzeich.
da er sich alles merkt was noch zum abarbeiten vorliegt!

das Beispiel:



        static void Main(string[] args)
        {
          
            MyClass walker = new MyClass();

            walker.Walk(@"C:\Dokumente und Einstellungen\");
        }


public void Walk(string verzeichnis)
{
   Console.WriteLine("Walk: " + verzeichnis);
   DirectoryInfo dir = new DirectoryInfo(verzeichnis);
      foreach(DirectoryInfo subDir in dir.GetDirectories()){
         string subDirPath = subDir.FullName;

         // Funktion innerhalb der Funktion aufrufen
         Walk(subDirPath);
     }
}

so, listet alle verzeichnisse innerhalb der String bedingung auf!

jetzt kannst du auch ohne weiteres die FileClasses benutzen um dir nur
bestimme Dateien ausgeben zu lassen!

Gruß
Erlon

Edit:
oder noch kürzer


public void Walk(string verzeichnis)
{
   Console.WriteLine("Walk: " + verzeichnis);
   DirectoryInfo dir = new DirectoryInfo(verzeichnis);
      foreach(DirectoryInfo subDir in dir.GetDirectories()){

         // Funktion innerhalb der Funktion aufrufen
         Walk(subDir.FullName);
     }
}

Hier mir dateien ich hoffe ich konnte dir helfen!


public void Walk(string verzeichnis)
		{
            Console.WriteLine("Walk: " + verzeichnis);


            DirectoryInfo dir = new DirectoryInfo(verzeichnis);
            
            foreach(DirectoryInfo subDir in dir.GetDirectories()){
				string subDirPath = subDir.FullName;

                foreach (FileInfo file in dir.GetFiles()){
                    string fileName = file.FullName;
                    //oder für die Extension
                    string fileExtension = file.Extension;
                    //und ob sie existiert
                    string fileExists= file.Exists;
                    Console.WriteLine(dirFiles);
                }

                // Funktion innerhalb der Funktion aufrufen
                Walk(subDirPath);
            }

		}