写入文件时“无法访问文件”

时间:2013-08-22 10:45:52

标签: c# text-editor streamwriter

我一直在研究记事本的克隆,我遇到了一个问题。 当我尝试将文本框中的文本写入我创建的文件时,我得到了异常:

  

进程无法访问文件'C:\ Users \ opeyemi \ Documents \ b.txt'   因为它正被另一个进程使用。

以下是我编写的代码。我真的很感激有关我接下来应该做什么的任何建议。

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    SaveFileDialog TextFile = new SaveFileDialog();
    TextFile.ShowDialog();
  // this is the path of the file i wish to save
    string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),TextFile.FileName+".txt");
    if (!System.IO.File.Exists(path))
    {
        System.IO.File.Create(path);
        // i am trying to write the content of my textbox to the file i created
        System.IO.StreamWriter textWriter = new System.IO.StreamWriter(path);
        textWriter.Write(textEditor.Text);
        textWriter.Close();
    }
}

1 个答案:

答案 0 :(得分:6)

您必须在StremWriter中“保护”using使用{ ),例如:

using (System.IO.StreamWriter textWriter = new System.IO.StreamWriter(path))
{
    textWriter.Write(textEditor.Text);
}

不需要.Close()

您不需要System.IO.File.Create(path);,因为StreamWriter会为您创建文件(而Create()会返回您在代码中保持打开的FileStream

技术上你可以:

File.WriteAllText(path, textEditor.Text);

这是一体化,并做所有事情(开放,写作,关闭)

或者如果你真的想使用StreamWriter和File.Create:

using (System.IO.StreamWriter textWriter = new System.IO.StreamWriter(System.IO.File.Create(path)))
{
    textWriter.Write(textEditor.Text);
}

(有一个StreamWriter构造函数接受FileStream