Laden...

Wie kann ich den Inhalt eines FileStreams in Console.WriteLine anzeigen?

Erstellt von AndiT vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.234 Views
A
AndiT Themenstarter:in
1 Beiträge seit 2015
vor 8 Jahren
Wie kann ich den Inhalt eines FileStreams in Console.WriteLine anzeigen?

Hallo,

Ich habe hier ein kleines Programm und habe mir mitten drin in den Kopf gesetzt ich würde gerne in einem Console.WriteLine darstellen, was gerade der FileStream fsSource enthält. Nach einigem googeln, ist mir klar, dass das über diverse Schritte gehen muss, weil direkt nichts findbar ist.
Wie mache ich das am geschicktesten?
Die Datei enthält nur ein paar Zeilen Text und ist nicht wichtig.
Danke für ein paar Hinweise.

Hier das Programm:


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Als erstes musst du verstehen, dass die using statements geschachtelt sind
            // was nur geht, solange nur ein statement folgt. 
            // das dritte benötigt daher geschweifte Klammern
            using (FileStream fsSource = File.OpenRead(@"c:\temp\source.txt"))
                using (FileStream fsHeader = File.OpenWrite(@"c:\temp\header.txt"))
                    using (FileStream fsBody = File.OpenWrite(@"c:\temp\body.txt"))
                    {
                        byte[] header = new byte[20];
                        byte[] body = new byte[fsSource.Length - 20];
                        // Lies aus fsSource und rein in das byte array namens header, 
                        // beginne mit byte[0] und schreibe header.Length viele rein
                        fsSource.Read(header, 0, header.Length);

                        // Schreib in den FileStream namens fsHeader was im Byte Array namens header drin ist
                        fsHeader.Write(header, 0, header.Length);
                        
                        // Jetzt möchte ich gerne den Inhalt von fsSource in einem Console.WriteLine zeigen
                        // weiß aber leider nicht wie ich das anstellen soll...
                        // mit StringBuilder, StreamWriter?
                        StringBuilder sb = new StringBuilder();
                        //sb.Append()
                        //Console.WriteLine();

                        fsSource.Read(body, 0, body.Length);
                        fsBody.Write(body, 0, body.Length);
                        fsBody.Close();
                        fsHeader.Close();
                        fsSource.Close();
                    }
          }
    }
}

Danke und Gruß
Andi

S
322 Beiträge seit 2007
vor 8 Jahren

Hallo,

wenn deine gelesenen Bytes einfache ASCII-Zeichen sind, dann so ausgeben:


Console.WriteLine(Encoding.ASCII.GetString(header));

Oder willst Du den Rest von fsSource nach dem Header anzeigen?

T
2.219 Beiträge seit 2008
vor 8 Jahren

Arbeite doch hier lieber mit der File Klasse.
Dort kannst du dir mit File.ReadAllLines die Zeilen aus den Dateien liefern lassen.
Hier kannst du dann mit einer foreach/for Schleife die Zeilen durchgehen und per Console.WriteLine ausgeben lassen.
Ist doch viel einfacher.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

127 Beiträge seit 2015
vor 8 Jahren