Laden...

Streamwriter - Datei wird erstellt, ist aber leer

Erstellt von w1z4rd2003 vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.281 Views
w1z4rd2003 Themenstarter:in
624 Beiträge seit 2006
vor 15 Jahren
Streamwriter - Datei wird erstellt, ist aber leer

hallo zusammen

ich hab folgender code geschrieben der mir zeilenweise etwas ausliest aus einer datei, einige stellen replaced und danch jede zeile wieder in einem output schreibt.
das problem ist das das output file zwar generiert wird aber immer leer bleibt.
was ist hier falsch?
in der variable result1 steht genau das was ich will. ich müsste diese nur ins file schreiben.


            FileStream fs = new FileStream("c:\\Temp\\C_EXPRICE.CSV", FileMode.Open);
            StreamReader sr = new StreamReader(fs);
            StreamWriter sw;
            sw = File.AppendText("c:\\Temp\\output.txt");
            

            string line = "";
            int lineNo = 0;
            do
            {
                line = sr.ReadLine();
                if (line != null)
                {
                    string strline = line;
                    string strTimeOrig = Right(strline,4);
                    int rowlength = strline.Length;
                    string strDateOrig = Mid(strline, rowlength - 13, 8);

                    string result = strline.Replace(Right(strline, 4), txtTargetTime.Text);
                    string result1 = result.Replace(Mid(strline, rowlength - 13, 8), txtTargetDate.Text);


                    sw.WriteLine(result1);

                    lineNo++;
                }
            } while (line != null);
 
            sw.Close();

gruss und danke
w1z4rd2003

84 Beiträge seit 2008
vor 15 Jahren

Hast du dir mal "result1" auf der Konsole ausgeben lassen?

Eigentlich sollte das gehen, wenn die Variable wirklich befüllt ist.

Hab grad folgenden Code Probiert:


StreamWriter sw = File.AppendText("C:\\Temp\\output.txt");

sw.WriteLine("Hallo");

sw.Close();

Ging auch.

Ansonsten kannste ja auch mal Probieren:


StreamWriter sw = new StreamWriter(new FileStream("C:\\temp\\output.txt", FileMode.Append));

sw.WriteLine("Hallo");

sw.Close();

mfg

B
196 Beiträge seit 2007
vor 15 Jahren

Also ich habe den Code mal übernommen und getestet, habe dabei jedoch die Stringbearbeitungen ausgelassen.

Der Code ans ich funktioniert, also liegt der Fehler darin das deine Bearbeitung vom String ihn anscheinden so verändert das das Result am Ende leer ist.

PS.:

  • nicht vergessen deinen Streamreader auch zu schließen.
  • du musst nicht prüfen ob line == null , StreamReader haben eine Property "EndOfStream" um zu überprüfen ob man am ende ist ^^

your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself

3.971 Beiträge seit 2006
vor 15 Jahren

Vllt. auch wichtig, mal in VS Debugger->Ausnahmen->Common Langauge Runtime Exception einen haken setzen. Deine oder vom System geworfen Exceptions werden nicht abgefangen und der Debugger springt sofort. Wichtig bei falsch platzierten Try/catch Anweisungen

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

1.378 Beiträge seit 2006
vor 15 Jahren

vielleicht hilft ja ein Flush?

Lg XXX

3.971 Beiträge seit 2006
vor 15 Jahren

Flush wird automatisch bei einem Close gemacht und das ist vorhanden (solange keine Exception auftritt)

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

w1z4rd2003 Themenstarter:in
624 Beiträge seit 2006
vor 15 Jahren

hallo zusammen
danke für die antworten.

habe es immer während dem dubuggen angeschaut und es war leer, auch nach mehreren durchläufe 😒 komisch.
wenn ich es ganz durchlaufen lasse mit F5 wird es geschrieben.

gruss
w1z4rd2003

T
708 Beiträge seit 2008
vor 15 Jahren

hallo zusammen
wenn ich es ganz durchlaufen lasse mit F5 wird es geschrieben.

Das ist ja auch Logisch. Denn wie kleines_eichhoernchen schon sagt, arbeitet das Close()
bei dem StreamWriter wie ein Flush.
Das bedeutet, das alles in einem Rutsch geschrieben wird was du vorher deiner StreamWriter Variablen zugewiesen hast.

Vorher passiert an deiner Textdatei nix.

Gruß,
TriB

w1z4rd2003 Themenstarter:in
624 Beiträge seit 2006
vor 15 Jahren

ok vielen dank an allen