我正在寫一個小應用程序來使用.NET DataSets和XML從數據庫導出和導入數據,並將其作爲我正在執行以下操作的一部分。StreamWriter,FileStream和Windows文件鎖
StreamWriter sw = new StreamWriter(file);
sw.Write(xml.OuterXml);
sw.Close();
問題是close方法關閉FileStream(傳遞給構造函數的文件參數),但不釋放文件鎖定。該文件是我編寫的程序創建的,因此我不知道其他任何內容都將其鎖定。
有什麼我做錯了或這是一個Windows錯誤?
編輯
是「文件」是一個FileStream對象,我天真地認爲調用close()在一個封裝中的文件流還清理和將調用的FileStream處置底層文件流的流。關閉方法。但我不能確定。
將此包裝在使用區塊中仍具有相同的效果。
一個額外注意的是,文件流對象在不同的方法創建的,但不應該有任何區別
你如何確定文件仍然被鎖定?我經常這樣做,而且我從來沒有遇到過你描述的問題。 – 2010-11-24 00:25:29
是啊,什麼是「文件」?它是一個FileStream嗎?如果是這樣,你需要關閉它,這不是操作系統的錯誤。像Jim一樣,我對簡單的IO操作沒有任何問題。 – 2010-11-24 01:19:23
您可以控制「肛門保持性」和「moronic」文件鎖定。如果在打開文件時不想鎖定文件,請這麼說:http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx http://msdn.microsoft.com/en-us /library/system.io.fileshare.aspx – 2010-11-24 01:21:58