C#文件正在使用另一个程序

时间:2013-03-31 00:50:41

标签: c# file-io

System.IO.File.CreateText(@"C:\\ProgramData\\Password Manager\\pwd.dat");

这使文件完美无缺。

System.IO.File.WriteAllLines(@"C:\\ProgramData\\Password Manager\\pwd.dat", pwd);

但这一行出错了

  

“进程无法访问文件'C:\ ProgramData \ Password Manager \ pwd.dat',因为它正由另一个进程使用。”

有没有办法在写入之前关闭文件?

2 个答案:

答案 0 :(得分:5)

您无需使用CreateText。只需致电WriteAllLines,即可为您创建文件。目前,CreateText返回的流保留在它创建的文件上,这就是抛出错误的原因。

答案 1 :(得分:4)

File.CreateText不仅创建文件,而且打开它并返回一个流来写入文件 您的后续呼叫会自行阻止该文件

尝试

StreamWriter sw = File.CreateText(@"C:\\ProgramData\\Password Manager\\pwd.dat");
sw.Close();
sw.Dispose();

或只是

using(File.CreateText(@"C:\\ProgramData\\Password Manager\\pwd.dat"))  {}

using statement负责关闭并处理文件)

但是,查看代码是完全没必要的,因为如果文件不存在,File.WriteAllLines会创建该文件。