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
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?
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.