为什么我得到:"进程无法访问该文件,因为它正被另一个进程使用"

时间:2014-03-16 21:41:11

标签: c# file process createfile

我使用C#尝试了以下内容:

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

但是当我运行该程序时,它表示该进程无法访问该文件(x.y),因为它正由另一个进程使用。

[file.WriteAllText]

提前致谢。

3 个答案:

答案 0 :(得分:3)

File.CreateText返回为您打开的StreamWriter 如果要使用File.WriteAllText,则需要在之前关闭该流。

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

或者根本就不要在那时创建文件,只是使用以下WriteAllText

来自MSDN上的WriteAllText

  

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

答案 1 :(得分:1)

您需要删除

File.CreateText("x.y");

它会将StreamWriter返回给您新创建的文件,您甚至不会使用或需要它。 File.WriteAllText无法使用

  

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

答案 2 :(得分:1)

我明白了。

如果文件已存在,File.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);