frage zum speichern in eine datei in C#



  • Hallo,

    ich habe einen String der in eine Datei geschrieben werden muss. In diesem String kommen nun jedoch Sonderzeichen vor wie z.b. "ä" oder "ü".
    mit dem folgenden Code schreibt der aber diese Sonderzeichen nicht:

    FileStream fs = new FileStream(dateiname, FileMode.Create, FileAccess.Write);
    
    StreamWriter sw = new StreamWriter(fs);
    
    puffer = "Dieses hier müsste funktionieren";
    sw.WriteLine(puffer);
    sw.Close();
    fs.Close();
    

    Noch zu erwähnen wäre, das der Inhalt von Puffer aus einer Excel Tabelle ausgelesen wird und wenn ich das mit einer Messagebox überprüfe steht da auch der richtige String. Und in der Variable Dateiname ist natürlich noch der Name der Datei, die erzeugt werden soll angegeben.

    Wäre wirklich nett von euch wenn ihr mir da weiterhelfen könntet.



  • Ich glaube nicht, dass ein StreamWriter alles korrekt codiert. Eigentlich ist ein StreamWriter saudumm und schreibt einfach nur seine Bytes.
    Du solltest einen TextWriter benutzen, der sollte in der Lage sein, die Zeichen UTF-8 zu kodieren und die richtigen Bytes dann an seinen untergebenen StreamWriter zu schicken.



  • nur so nebenbei: I/O Sachen sollten in einem try-Block stehen, wo du unten dann ein finally anhängst und die streams auf null prüfst und closed, wenn sie nicht null sind.



  • kannst du mir da vielleicht mal ein Beispiel für geben mit Erklärung. Ich steig durch die Doku in der MSDN da nicht durch.



  • Für den TextWriter? Den kriegst du doch schon mit File.CreateText() oder irgendwie so.



  • Servus,

    nur mal so...
    das geht auch mit dem StreamWriter

    StreamWriter fOutFile = new StreamWriter("C:\\Katzenklo.txt", false, System.Text.Encoding.GetEncoding("ISO-8859-1"));
    //System.Text.Encoding.Unicode;
    //System.Text.Encoding.UTF7;
    //System.Text.Encoding.UTF8;
    //etc.
    

    Dann schreibt er dir auch deine ÜÜÜÜHHHHsss.... 😃

    ist nur ein Beispiel

    *winke*
    Hellsgore



  • hallo,

    ich habe das nun wie hellsgore gesagt hat mit dem streamwriter gelöst.

    Das ist der Quelltext dazu:

    string FILE_NAME = "test.txt";
    
    StreamWriter sr = File.CreateText(FILE_NAME);
    sr.WriteLine ("Blööö.");
    sr.Close();
    

    Ist es denn schlimm wenn ich die ganzen anderen Parameter nicht mit angeben wie Hellsgore beschrieben hat?



  • Servus,

    öhm ich glaube du hast mich leicht Mißverstanden. Ich zeige dir mal kurz wie ich das gemeint habe. Warum brauchst du einen FileStream, möchtest du mit ihm noch irgendetwas anfange? Wenn nein, dann kannst du diese Zeile ruhig weglassen.

    string strPathFile = "C:\\DeinExport.txt";
    StreamWriter fOutFile = new StreamWriter(strPathFile, false, System.Text.Encoding.UTF8); //Hier schonmal deine Datei mit ÜÄÖs *g*
    
    fOutFile.WriteLine("Rübbel die Kätz"); //Hier schreibt er
    
    fOutFile.Flush();
    fOutFile.Close();
    

    Du darfst das System.Text.Encoding nicht vergessen.

    *winke*
    Hellsgore

    PS: Du kannst auch nur Encoding.Schießmichtot schreiben wenn du vorher die System.Text eingebunden hast. (using System.Text)



  • ok ... mir ist nun nur noch unklar für was der zweite Parameter da ist. wenn du so nett wärst mir das auch noch zu verraten ... will ja auch ganz wissen was es damit auf sich hat



  • Wird da überhaupt noch eine Textdatei draus, oder ist die dann binär codiert?


Anmelden zum Antworten