C# 如何将文本框的内容保存到文件

C# 如何将文本框的内容保存到文件,c#,C#,我环顾四周,找到了几个类似问题的答案,但不知怎么的,这对我并不适用。 我正在尝试将文本框的内容保存到用户提示文件中 private void btnSave_Click(object sender, EventArgs e) { Stream myStream; SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "txt files (*.txt)|*.txt|

我环顾四周,找到了几个类似问题的答案,但不知怎么的,这对我并不适用。 我正在尝试将文本框的内容保存到用户提示文件中

private void btnSave_Click(object sender, EventArgs e)
{
    Stream myStream;
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();

    saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        if ((myStream = saveFileDialog1.OpenFile()) != null)
        {
            File.WriteAllText(saveFileDialog1.FileName, rtbIncoming.Text);
            myStream.Close();
        }
    }
}    

用户提示按预期弹出,生成的文件没有任何内容。

您不需要自己打开文件流。File.writealText可以为您完成所有这些。所以这就足够了:

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    File.WriteAllText(saveFileDialog1.FileName, rtbIncoming.Text);

我猜您的代码会导致一个空文件,因为您打开了一个不用于写入的单独流,在调用WriteAllText之后关闭并刷新了该流。

您可以打开两次该文件。只需完全删除内部if和myStream,它就会工作。为什么要使用SaveFileDialog.OpenFile方法?这是阻止向文件写入文本。我现在意识到了这一点,将其更改为下面的答案是可行的。您没有得到System.IO.IOException抛出的异常吗?它应该告诉您,另一个进程正在访问文件不,我没有,除了文件是空的以外,其他一切都正常工作