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 ステートメントは、ファイルを閉じて破棄するように注意します)

ただし、ファイルが存在しない場合はFile.WriteAllLinesがファイルを作成するため、コードを表示する必要はまったくありません。

于 2013-03-31T00:54:49.193 に答える