为什么我会得到:"the process cannot access the file because it is being used by another process"



我使用c#尝试了以下操作:

File.CreateText("x.y");
folderBrowserDialog1.ShowDialog();
string dir = folderBrowserDialog1.SelectedPath.ToString();
File.WriteAllText("x.y", dir);

但是当我运行程序时,它说进程不能访问文件(x.y),因为它正在被另一个进程使用。

[At file.WriteAllText]

文件。CreateText返回一个为你打开的StreamWriter。
如果你想使用File。WriteAllText你需要关闭流。

StreamWriter sr =  File.CreateText("x.y");
sr.Close();

或者干脆不创建文件,只使用下面的WriteAllText

From WriteAllText on MSDN

创建一个新文件,将指定的字符串写入文件,然后关闭文件。如果目标文件已经存在,则覆盖

你需要删除

File.CreateText("x.y");

它返回你的StreamWriter到新创建的文件,你甚至不使用或不需要。File.WriteAllText没有它也可以工作

创建新文件,将内容写入该文件,然后关闭该文件。如果目标文件已经存在,则覆盖该文件。

我明白了。

文件。如果文件已经存在,CreateText将打开该文件。

所以不是:

File.CreateText("x.y");
folderBrowserDialog1.ShowDialog();
string dir = folderBrowserDialog1.SelectedPath.ToString();
File.WriteAllText("x.y", dir);

我:

if (!File.Exists("x.y"))
{
        File.CreateText("x.y");
}
folderBrowserDialog1.ShowDialog();
string dir = folderBrowserDialog1.SelectedPath.ToString();
File.WriteAllText("x.y", dir);

相关内容

  • 没有找到相关文章