该文件正由另一个进程使用,我必须关闭它吗? 怎么样?

我正在使用一个文本文件来获取一些数据用于以后的目的。 所以我要做的是检查文件是否存在,如果不是,我在需要时创建一个新文件。 这给了我一个错误,说我的文件仍在被不同的进程使用,但我不确定为什么会这样。

我就是这样做的。 在这里,我正在检查文件是否存在,它在程序运行时启动:

private void CreateLastOpenFile() { if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } if (!File.Exists(file)) { File.Create(file); } } 

现在,我在检查或创建一个新文件时添加一些数据(我在我的程序中有两个位置):

 CreateLastOpenFile(); File.WriteAllText(file, data); 

这可能有什么问题? 我从网上读过一些例子,但没有看到任何关于关闭任何文件的内容。

试试这个。 这将在文件创建期间关闭打开的流

  if (!File.Exists(file)) { FileStream str = File.Create(file); str.Close(); } 

File.Create正在创建一个锁定文件的FileStream。 你应该关闭它。 实际上,您甚至不需要创建文件。 File.WriteAlltext将为您完成

我建议你一步一步地创建和填充文件数据,使用像StreamWriter这样的类允许你处理类,你不应该有这样做的问题,这是一个例子:

 StreamWriter Swr = new StreamWriter(FilePath); Swr.Write(Data); Swr.Close(); Swr.Dispose(); 

//执行关闭和处理,确保文件不再被锁定

您还可以使用File.WriteAllText(字符串Path,字符串Data),此方法不会锁定文件。

您没有关闭File.Create()返回的流句柄。

建议你不要在你的情况下使用File.Create() 。 你可以使用File.WriteAllText(file, data); – 根据MSDN文档,如果文件不存在,它会创建文件,或者在文件存在时覆盖文件。 之后关闭文件流。

如果您使用以下方法将数据写入文本文件,则无需检查文件是否存在,如果不存在则创建文件。 “WriteAllText”自己处理所有这些事情。 它将创建文件(如果不存在),写入数据并关闭它,或覆盖文件(如果已存在)。 File.WriteAllText(文件,数据);