1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
864
864
EMPFEHLEN
-
Hallo zusammen,
ich versuche gerade ein Tool zu Schreiben, welches mir eine Auflistung von allen Dateien mit einer bestimmten Endung erstellt. Das Auflisten von Dateien habe ich soweit hinbekommen,
dass jetzt die erste Ordnerebene von jedem Laufwerk durchsucht wird.
Ich bekomme es aber nicht in, das die Unterordner dieser Ebene auch noch durchsucht wird.
Hier ein Beispiel:
C:\Test\test.txt -> wird gefunden.
C:\Test\Test\test.txt -> wird nicht gefunden.
Die Ordnerstruktur soll ganz durchgegangen werden. Also auch z.B C:\Test\Test\\Test\Test\Test\Test\Testtest.txt
Kann sich das mal jemand anschauen?
Danke
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
using System; using System.IO; using System.Data; using System.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> [STAThread] static void Main() { int count = 0; string[] drives = new string[10]; foreach (string s in Directory.GetLogicalDrives()) { count++; drives[count] = s; } for (int counttemp = 1; counttemp <= count; counttemp++) { try { MessageBox.Show(drives[counttemp]); foreach (string d in Directory.GetDirectories(drives[counttemp])) { MessageBox.Show(d); try { foreach (string f in Directory.GetFiles(d, "*.txt")) { MessageBox.Show(f); } } catch (UnauthorizedAccessException) { } finally { } } } finally { } } } } }
-
Hi und Willkommen bei tutorials.de

Du musst jeden gefundenen Ordner extra nocheinmal durchgehen; darin gefundene Ordner wieder...eine rekursive Methode sollte da hilfreich sein.
Also eine, der du einen Ordner (Pfad) geben kannst und dieser durchsucht wird.
Die gefundenen Dateien (mit passender Endung) dabei ausgeben (oder sonst was damit anstellen) und mit jedem gefundenen Ordner die Funktion selbst in sich wieder aufrufen.
Gruß
-
Huhu Ordos,
Das .NET-Framework bietet bereits eine Methode für das, was du tun möchtest:
Code csharp:1
System.IO.Directory.GetFiles(@"C:\Test", "*.txt", System.IO.SearchOption.AllDirectories);
Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
Hi ihr beiden,
danke euch erstmal für die schnellen Antworten.
Ich habe das ganze jetzt mal folgendermaßen angepasst:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
using System; using System.IO; using System.Data; using System.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> [STAThread] static void Main() { int count = 0; string[] drives = new string[10]; foreach (string s in Directory.GetLogicalDrives()) { count++; drives[count] = s; } for (int counttemp = 1; counttemp <= count; counttemp++) { Search(drives[counttemp]); } } public void Search(string drive) { try { MessageBox.Show(drive); foreach (string d in Directory.GetDirectories(drive)) { MessageBox.Show(d); try { foreach (string f in Directory.GetFiles(d, "*.txt")) { MessageBox.Show(f); } Search(d); } catch (UnauthorizedAccessException) { } finally { } } } finally { } } } }
Bekomme jetzt aber die Meldung:
Fehler 1 Für das nicht statische Feld, die Methode oder die Eigenschaft "WindowsFormsApplication1.Program.Search(string)" ist ein Objektverweis erforderlich. C:\Users\Kevin\Documents\Visual Studio 2010\Projects\winws\winws\Program.cs 27 13 winws
Was soll mir diese Meldung sagen? Was habe ich falsch gemacht?
Kann mir das vielleicht noch jemnd von euch so anpasse, dass die Meldung nicht mehr kommt?
@Muepe32 Danke, das werde ich mir Morgen mal anschauen.
-
Das innere foreach mit dem GetFiles würde ich noch außerhalb (davor/danach, egal) des anderen foreach machen, sonst bindest du das Startverzeichnis nicht in die Suche mit ein.
Und der Fehler mit dem static:
Main ist static, Search nicht.
Entweder schreibst du vor Search auf ein static, oder du legst in Main ein Objekt von Program an und rufst von diesem Search auf.
@Muepe: Ich wusste, das es sowas gibt...aber zu faul zum Suchen
Gruß
-
Super, es funktioniert. Danke.
Das einzige was jetzt komisch ist, ist das
Code :1 2 3 4 5
foreach (string f in Directory.GetFiles(d, "*.txt")) { MessageBox.Show(f); } Search(d);
Mir nicht nur *.txt files sondern auch Verzeichnisnamen ohne *.txt file am ende ausgibt.
-
Ich habe den Fehler gefunden :/
Das liegt wohl an der Uhrzeit.
Code :1
MessageBox.Show(drive);
Danke Euch beiden für Eure schnelle Hilfe.
Ähnliche Themen
-
C# Directory.GetFiles Fehler
Von NSR im Forum .NET CaféAntworten: 2Letzter Beitrag: 30.04.11, 11:53 -
c# - Directory.GetFiles() kein Zugriff => überspringen
Von Samillon31112 im Forum .NET Windows FormsAntworten: 6Letzter Beitrag: 30.12.09, 13:17 -
Directory.GetFiles(path,SearchPattern) !?
Von axelfxxx im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 02.03.09, 14:55 -
Getdirectories und Getfiles vb2008
Von DerStauner im Forum .NET Windows FormsAntworten: 4Letzter Beitrag: 10.02.09, 22:13 -
C# - Getfiles im selben Directory
Von Alexander12 im Forum .NET DatenverwaltungAntworten: 3Letzter Beitrag: 23.10.05, 14:27





Zitieren

Login





