0
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',因为它正被另一个进程使用。”

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

4

2 回答 2

5

你不需要使用CreateText. 只需调用WriteAllLines,它将为您创建文件。目前,由返回的流CreateText保留了它创建的文件,这就是引发错误的原因。

于 2013-03-31T00:54:22.513 回答
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 语句负责关闭和处理文件)

however, this is completely unnecessary seeing your code because File.WriteAllLines creates the file if it doesn't exist.

于 2013-03-31T00:54:49.193 回答