Zum Inhalt springen

Ausgabe in eine .txt Datei


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

    }

}

Geschrieben

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.

Geschrieben

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

Geschrieben

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

}

Geschrieben

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

    }

}

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...