2016-04-08 9 views
1

Ich versuche .txt Datei mit StreamWriter zu erstellen. Ich möchte in der Lage sein, eine Textdatei einzulesen, dann automatisch den Inhalt dieser Datei in eine neue .txt Datei zu schreiben und sie im Stammverzeichnis der Anwendung mit demselben Dateinamen zu speichern. (Hoffen, dass das Sinn macht.)
Derzeit kann ich keine Lösung finden, um alles in Gang zu bringen. Bitte sehen Sie meinen Code. Jede Anleitung würde sehr geschätzt werden.StreamWriter nicht schreiben

private void button1_Click(object sender, EventArgs e) 
{ 
    //read in a .txt file// this all works fine 
    OpenFileDialog op = new OpenFileDialog(); 
    if (op.ShowDialog() == DialogResult.OK) 
    richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText); 
    this.Text = op.FileName; 

    string filename = op.FileName; 


    // not working // 
    //create new .txt file contaning module notes 

    StreamWriter writer = new StreamWriter("..\\"op.FileName".txt"); 
    using (writer) 
    { 
     writer.Write(richTextBox1); 
    } 
} 
+0

Sie sollten Ihre Erklärung innerhalb der using-Anweisung machen. – Bauss

+0

Zunächst sollten Sie Ihre Syntaxfehler beheben, auf die Ihre IDE hinweist. – derpirscher

Antwort

10

Es gibt ein paar Probleme mit diesem, zunächst:

StreamWriter writer = new StreamWriter("..\\"op.FileName".txt"); 

werden sollten:

string filename = Path.GetFilename(op.FileName); 
StreamWriter writer = new StreamWriter(".\\Notes\\" + filename); 

Dann ein weiteres Problem ist hier:

using (writer) 
{ 
    writer.Write(richTextBox1); 
} 

Versuchen:

using (writer) 
{ 
    writer.Write(richTextBox1.Text); 
} 

Sie versuchen im Grunde, eine RichTextBox Instanz zu schreiben, die natürlich nicht funktioniert, da sie eine string erwartet.

Sie können auch diese zu überdenken:

if (op.ShowDialog() == DialogResult.OK) 
richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText); 
this.Text = op.FileName; 

Das if Konstrukt hier wird nur die Zeile, nachdem sie betrachten, die die folgenden Zeilen in gefährliches Gebiet legt, als ob Sie die offene kündigen, es wird nach wie vor Lauf.

setzen sie also alle zusammen:

using (OpenFileDialog op = new OpenFileDialog()) 
{  
    op.Filter = "Text Files|*.txt"; // Nice to have a filter 

    if (op.ShowDialog() == DialogResult.OK) 
    { 
     richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText); 

     this.Text = op.FileName; 
     string filename = Path.GetFilename(op.FileName); 
     StreamWriter writer = new StreamWriter(".\\Notes\\" + filename); 

     using (writer) 
     { 
      writer.Write(richTextBox1.Text); 
     } 
    } 

} // Clean up the OpenFileDialog instance 

Dies setzt voraus, das Notes Verzeichnis existiert. Wenn nicht, müsstest du es erstellen. Es nimmt auch an, dass sich das Verzeichnis in dem Arbeitsverzeichnis befindet, das normalerweise das Verzeichnis ist, von dem die ausführbare Datei ausgeführt wird.

+0

@ vc74 Ich bin dabei für die Liebe nicht die Punkte;) – Lloyd

+0

Danke @Lloyd, der zweite Teil funktioniert aber StreamWriter writer = new StreamWriter (".. \\" + op.FileName); Gibt einen Fehler von "Eine nicht behandelte Ausnahme vom Typ" System.NotSupportedException "aufgetreten in mscorlib.dll". Irgendwelche Ideen, was könnte das verursachen? Danke – JonnyAppleseed

+0

@JonnyAppleeseed Drop the .. \\ das sagt, gehen Sie eine Ebene, aus dem OpenFileDialog kommen Sie bereits einen Pfad haben. – Lloyd

Verwandte Themen