簡體   English   中英

StreamWriter不寫作

[英]StreamWriter not writing

我正在嘗試使用StreamWriter創建.txt文件。 我希望能夠讀取一個文本文件,然后將該文件的內容自動寫入一個新的.txt文件,並將其存儲到具有相同文件名的應用程序根目錄中。 (希望如此。)
目前,我無法找到一種解決方案來使其全部正常工作。 請看我的代碼。 任何指導將不勝感激。

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);
    }
}

首先有幾個問題:

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

應該:

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

然后另一個問題在這里:

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

嘗試:

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

您基本上是在嘗試編寫RichTextBox實例,因為它期望使用string ,所以該實例當然不起作用。

您可能還需要重新考慮:

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

這里的if構造將僅考慮其后的那一行,這會將以下各行置於危險區域,就像您取消打開一樣,它仍將運行。

所以放在一起:

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

這假定Notes目錄存在。 如果不是,則必須創建它。 它還假定目錄位於工作目錄中,該目錄通常是可執行文件從中運行的目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM