我一直在研究记事本的克隆,我遇到了一个问题。 当我尝试将文本框中的文本写入我创建的文件时,我得到了异常:
进程无法访问文件'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();
}
}
答案 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
)