2013-03-31 54 views
0
System.IO.File.CreateText(@"C:\\ProgramData\\Password Manager\\pwd.dat"); 

這使得該文件完美。C#文件正在被另一個程序使用

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

,但此行得到一個錯誤

「該進程無法訪問文件。‘C:\ ProgramData \密碼管理器\ pwd.dat’,因爲它正由另一個進程」

有沒有辦法寫入之前關閉文件?

+1

你有沒有'Close'和/或'Dispose'的結果['CreateText'(http://msdn.microsoft.com/en-us/library/system.io.file.createtext.aspx)?你爲什麼首先調用'CreateText'? ['WriteAllLines'](http://msdn.microsoft.com/en-us/library/system.io.file.writealllines.aspx)記錄爲*創建一個新文件... * –

+0

只需修復它。因爲我沒有將文件設置爲變量。我沒有選擇關閉它。只是把它變成了一個變量,關閉它,而不是它的工作。 – Dobz

回答

5

您不需要使用CreateText。只需撥打WriteAllLines即可爲您創建文件。目前由CreateText返回的流保存到它創建的文件中,這是導致錯誤的原因。

+0

謝謝:)工作完美! :) – Dobz

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會創建文件不存在。

相關問題