C# StreamWriter einsetzen

Blechdose

Ensign
Registriert
Mai 2008
Beiträge
148
Hallo,

ich schreibe zur Zeit ein kleines Programm womit man Txt-Dateien Öffnen&Speichern kann.
Letzeres bekomme ich aber leider nicht richtig hin. Habe zwar schon hier im Forum gesucht aber auch nichts passendes gefunden bis jetzt sieht das ganze so aus:
Code:
case "&Open":
                    string filepath;
                    OpenFileDialog ofd = new OpenFileDialog();
                    ofd.InitialDirectory = "C:\\";
                    ofd.Filter = "Textdatei (*.txt) |*.txt";
                    if (ofd.ShowDialog() == DialogResult.OK)
                    {
                        filepath = ofd.FileName;
                        using (StreamReader sr = new StreamReader(filepath))
                        {
                            while (sr.Peek() >= 0)
                            {
                                // Auslesen der Datei
                                richTextBox1.Text += sr.ReadLine();
                                TestProgressBar();
                                richTextBox1.Text += "\n";

                            }
                            sr.Close();
                        }
                    }

                    break;
                case "&Save":
                    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                    saveFileDialog1.InitialDirectory = "C:\\";
                    saveFileDialog1.Filter = "Textdatei (*.txt) |*.txt";
                    saveFileDialog1.ShowDialog();
                    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        filepath = saveFileDialog1.FileName;
                        using (StreamWriter sw = new StreamWriter(filepath))
                        {
                            // Datei Speichern?
                        }
                    }

                    break;

Wie gehe ich richtig mit dem StreamWriter um, damit er mein geschriebenes auch speichert?
Wäre sehr dankbar für Hilfe;)
 
Öhm, Google benutzt?

Desweiteren kannst du gleich die Eigenschaft .FileName verwenden und musst nicht unnötig zwischenspeichern.
 
Vielen Dank, das hat mir schon mal weitergeholfen.
Aber ich glaube ich seh den Wald vor, lauter Bäumen nicht;
Code:
case "&Save":
                    SaveFileDialog saveFile1 = new SaveFileDialog();
                    saveFile1.InitialDirectory = "C:\\";
                    saveFile1.Filter = "Textdatei (*.txt) |*.txt";

                    if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&
                        saveFile1.FileName.Length > 0) 

                    {
                        filepath = saveFile1.FileName;
                        using (StreamWriter sw = new StreamWriter(filepath))
                        {
                            richTextBox1.SaveFile(saveFile1.FileName, RichTextBoxStreamType.PlainText);
                        }
                    }

                    break;

So sieht das bei mir nun aus, wenn ich aber dann eine Datei speichern will, kommt immer ein Error...
 
Was für ein Error genau?

In deinem Code hast du den StreamWriter erstellt aber nicht benutzt.
Probiers mal so:
PHP:
StreamWriter sw = new StreamWriter(saveFile1.FileName, false);
richTextBox1.SaveFile(sw, RichTextBoxStreamType.PlainText);
sw.Close();

Ich kann grad nicht ausprobieren obs so funktioniert, aber normalerweise müsste es klappen.
 
Zuletzt bearbeitet:
Wenn ichs versuche zu Speichern kommt das hier (anhang)

habs dann nochmal mit dem versucht:
Code:
case "&Save":
                    SaveFileDialog saveFile1 = new SaveFileDialog();
                    saveFile1.InitialDirectory = "C:\\";
                    saveFile1.Filter = "Textdatei (*.txt) |*.txt";

                    if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&
                        saveFile1.FileName.Length > 0) 

                    {
                        StreamWriter sw = new StreamWriter(saveFile1.FileName, false);
                        richTextBox1.SaveFile(saveFile1.FileName, RichTextBoxStreamType.PlainText);
                        sw.Close();  
                    }

                    break;

kommt aber ebenfalls der gleiche fehler
 

Anhänge

  • error.JPG
    error.JPG
    28,9 KB · Aufrufe: 230
Oh sorry, hab mich oben verschrieben, habs ausgebessert.

Zur Exception: Die Exception kommt, weil du einen StreamWriter auf einen Dateipfad erstellst und dann der RichTextbox.SaveFile() Methode nochmal den selben Pfad übergibst. Diese Methode versucht nun in die Datei zu schreiben, was eine Exception hervorruft, da der StreamWriter ja gerade auf die Datei zugreift.

Probier mal den ausgebesserten Code in meinem obigen Post.
 
geht leider auch nicht :( kommt schon beim eingeben das unter-kringelte:
richTextBox1.SaveFile(sw, RichTextBoxStreamType.PlainText);
 
Ach die SaveFile Methode braucht nen FileStream und keinen StreamWriter.
Aber scheiß einfach drauf und nimm einfach die RichTextbox.SaveFile(String, RichTextBoxStreamType) Überladung:

PHP:
if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&
                        saveFile1.FileName.Length > 0) 

                    {                        
                        richTextBox1.SaveFile(saveFile1.FileName, RichTextBoxStreamType.PlainText);
                    }
 
juhu danke, jetzt geht's perfekt
endlich^^
 
Zurück
Oben