PhilippVP Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 Hallo alle zusammen, ich habe da eine Frage und ich bin noch ein C# Anfänger. Ich möchte in einem Bilderverzeichniss in dem Falle C:\Bilder alle Dateien mit .jpg auslesen und in eine .txt Datei schreiben. Wie kann ich das am besten lösen? Hier mein Code bisher: string ausgabedatei = @"C:\Server\index.txt"; DirectoryInfo di = new DirectoryInfo(@"C:\Bilder"); foreach (FileInfo file in di.GetFiles("*.jpg")); Danke schon einmal im Vorraus für eure Hilfe. MfG Philipp Zitieren
Klotzkopp Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 Weiß du nicht, wie du in eine Datei schreibst, oder weißt du nicht, wie du an den Dateinamen kommst? Zitieren
PhilippVP Geschrieben 25. Februar 2013 Autor Geschrieben 25. Februar 2013 Ich weiss nicht wie man in eine Datei schreibt. Also er soll die Bilder was in der C:\Bilder stehen und alle die was .jpg haben in die .txt Datei ausgeben. kannst du mir da helfen? MfG Philipp Zitieren
Felix91 Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 Folgender Snippet schreibt zwei einfache Zeilen Text in die Datei log.txt (relativer Pfad zum aktuellen Verzeichnis / Working Directory). using (var fs = File.OpenWrite("log.txt")) { using (var writer = new StreamWriter(fs)) { writer.WriteLine("Erste Zeile"); writer.WriteLine("Zweite Zeile"); } } Zitieren
PhilippVP Geschrieben 25. Februar 2013 Autor Geschrieben 25. Februar 2013 Hallo Felix91, hast des oben gelesen? Also er soll die Bilder was in der C:\Bilder stehen und alle die was .jpg haben in die .txt Datei ausgeben. MfG Philipp Zitieren
Klotzkopp Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 hast des oben gelesen?Ein bißchen was zum selber Denken wollen wir dir lassen. Das Forum ist kein kostenloser Hausaufgaben-Löse-Service. Zitieren
Felix91 Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 Philipp, wie Klotzkopp schon sagte sollte meine Antwort nur ein Anreiz sein, dein Problem selbst zu lösen. Solltest du gar nicht weiter kommen finden wir bestimmt zusammen auch eine Lösung. Verstehst du denn den Inhalt meines Snippets? Falls ja sollte der Rest doch ein Klacks sein. Zitieren
PhilippVP Geschrieben 25. Februar 2013 Autor Geschrieben 25. Februar 2013 Danke für eure Hilfe (: Felix kannst du mir noch schreiben was du genau mit dem Snippets machst? Zitieren
Felix91 Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 Wenn du irgendetwas auf Dateiebene machst benötigst du eine Instanz der FileStream Klasse. Durch die Klasse File haben wir Zugriff auf statische Methoden, wie z.B. OpenWrite - welches uns einen FileStream auf eine Datei mit Schreibrechten zurück gibt. Jetzt haben wir also einen Stream (bildlich kann man sich einen Tunnel vorstellen, wo das eine Ende unser Programm und das andere Ende die Datei ist) mit Schreibzugriff. Das ganze passiert in meinem Snippet mit der ersten Zeile. Das Schlüsselwort using gibt dabei an, dass die in den Klammern initialisierte Variable 1. nur in dem using Gültigkeitsbereich vorhanden ist und 2. automatisch am Ende "disposed" wird, also der Zugriff auf die Datei wird wieder freigegeben. Sollte letzteres nicht gemacht werden kann man im schlimmsten Fall mit anderen Programmen nicht mehr auf die Datei zugreifen, weil ja immer noch unser Programm die Datei benutzt. Okay, wir haben jetzt einen FileStream. Der ist jedoch sehr rudimentär und bietet nicht viele Funktionalitäten. Deswegen packe ich noch einen StreamWriter drum rum. Der bietet Möglichkeiten, wie z.B. Zeilen schreiben und vereinfacht das ganze etwas. Da auch hier Resourcen freigegeben werden müssen habe ich wieder ein using rum gepackt (Zeile 3). Und im inneren des usings kann man nun die Variable writer benutzen um Inhalte direkt in die Datei zu schreiben. PS: Das Schlüsselwort var ist so was wie ein universeller Datentyp (an die Profis: Ja der Ausdruck ist falsch, macht hier aber am besten klar was gemeint ist). Bei der Initialisierung der Variable merkt sich var was für ein Datentyp der Wert hat und benutzt diesen für die Variable anschließend. Statt var kannst du natürlich auch immer den konkreten Datentyp schreiben (FileStream, StreamWriter, etc). Ich hoffe es ist einigermaßen verständlich formuliert. Bei weiteren Fragen, erst mal die verlinkten MSDN Artikel durchschauen und dann einfach fragen Zitieren
Klotzkopp Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 Man kann auch direkt einen StreamWriter über den Dateinamen erzeugen. How to: Write to a Text File (C# Programming Guide) Zitieren
Felix91 Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 Stimmt, ich benutze oftmals direkt den FileStream, daher kommt der Umweg wohl zustande. Also Update des Snippets für Phillip: using (var writer = new StreamWriter("log.txt")) { writer.WriteLine("Erste Zeile"); writer.WriteLine("Zweite Zeile, usw.."); } Zitieren
Rekon1602 Geschrieben 25. Februar 2013 Geschrieben 25. Februar 2013 Hier ist der Code, der das tut was du willst // Create a streamwriter, which writes to c:\output.txt using (StreamWriter writer = new StreamWriter(@"C:\output.txt", false) { AutoFlush = true }) { // Read all *.jpg files from C:\Bilder string[] files = Directory.GetFiles(@"C:\Bilder", "*.jpg", SearchOption.TopDirectoryOnly); // Iterate all files and do something foreach (string file in files) { // Write the complete path of the file writer.WriteLine(file); // Only write the filename with extension writer.WriteLine(Path.GetFileName(file)); // Write the filename without extension writer.WriteLine(Path.GetFileNameWithoutExtension(file)); } } Zitieren
PhilippVP Geschrieben 25. Februar 2013 Autor Geschrieben 25. Februar 2013 Dankeschön für eure tolle Hilfe (: Funktioniert alles (: Zitieren
a3quit4s Geschrieben 26. Februar 2013 Geschrieben 26. Februar 2013 Hier ist der Code, der das tut was du willst Ich will ein Sandwich mit Schinken, Salami, Pepperoniwurst und Essiggurken. Wann bringst du es mir vorbei? Zitieren
lbm1305 Geschrieben 26. Februar 2013 Geschrieben 26. Februar 2013 Eigentlich schade. Ich glaube der TE hat zwar jetzt funktionierenden Code, aber warum und wie dieser funktioniert, dass weiss er nicht. Zitieren
Rekon1602 Geschrieben 26. Februar 2013 Geschrieben 26. Februar 2013 Ich will ein Sandwich mit Schinken, Salami, Pepperoniwurst und Essiggurken. Wann bringst du es mir vorbei? Hier ist dein Sandwich Zitieren
a3quit4s Geschrieben 26. Februar 2013 Geschrieben 26. Februar 2013 Dem TE hast du es nicht nur gebracht sondern noch vorgekaut... Ein wenig Eigenleistung sollte schon erbracht werden, der Code funktioniert zwar aber ich bezweifle dass der TE weiss wieso. Zitieren
Rekon1602 Geschrieben 26. Februar 2013 Geschrieben 26. Februar 2013 Ich gehe immer von dem Guten im Entwickler aus, und hoffe sehr darauf, dass er dann auch versucht das zu verstehen, was er hinschreibt. Zitieren
HJST1979 Geschrieben 27. Februar 2013 Geschrieben 27. Februar 2013 Ich gehe immer von dem Guten im Entwickler aus, und hoffe sehr darauf, dass er dann auch versucht das zu verstehen, was er hinschreibt. Die Hoffnung stirbt zuletzt Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.