写入文件时“无法访问文件” - c#

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

该进程无法访问文件'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();
    }
}

参考方案

您必须在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

在Sublime Text 3插件中获取当前行 - python

我正在为Sublime Text 3写一个简单的插件,需要获取当前所选行的内容。我可以用selection = sublime.Region(self.view.sel()[0].begin(), self.view.sel()[0].end()) 获取当前突出显示的部分,但是有没有一种方法可以选择或返回整个当前行的内容,而无需手动选择全部?this pag…

Sublime Text-断点时的Python环境 - python

有没有一种方法可以在Sublime Text中配置该功能(例如,存在于PyCharm上),使您可以在代码中具有当前变量上下文的断点时使用python解释器控制台? (我知道您可以获得PDB控制台,但是我指的是功能完善的python控制台解释器)最好。 参考方案 它有一些debuggers,但是看起来很老旧而且很笨拙。当前只有与PyCharm进行免费,全面的比…

在Python中避免相对导入和sys.path - python

当前,我有一个Python项目正在处理这样的目录结构:tests/ corpus/ __init__.py tests.py monkey/ corpus/ corpus.py setup.py 我想将tests.py(在测试/语料库中)导入corpus.py(在猴子/语料库中)。我已经看到许多涉及使用相对导入和sys.path的解决方案,但是我也看到人们直…

是否有System.IO.Stream的接口? - c#

我正在编写一个需要接收一个对象,记录其当前状态,更新该对象并将其传递给另一个类的类。唯一的问题是,您只能从一个类继承,而我需要在我的项目中继承一个类。我对System.IO.Stream感兴趣,因为如果需要,我可以将此类移动到它自己的线程中,而无需大多数(如果不是全部)套接字和IPC的其他方法。主要问题是System.IO.Stream是否有接口?如果没有,…

System.Text.Json合并两个对象 - c#

是否可以用System.Text.Json?合并两个这样的json对象对象1{ id: 1 william: "shakespeare" } 对象2{ william: "dafoe" foo: "bar" } 结果对象{ id: 1 william: "dafoe" foo: …