Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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

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");

    }

}

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.

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 :)

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..");

}

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));

    }

}

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.