簡體   English   中英

StreamWriter,FileStream和Windows文件鎖

[英]StreamWriter, FileStream and windows file locks

我正在編寫一個小型應用程序,以使用.NET DataSets和XML從數據庫導出和導入數據,為此,我正在執行以下操作。

StreamWriter sw = new StreamWriter(file);
sw.Write(xml.OuterXml);
sw.Close();

問題是close方法關閉FileStream(傳遞給構造函數的文件參數),但不釋放文件鎖。 該文件是我編寫的程序創建的文件,因此我知道沒有其他文件可以鎖定它。

我在做錯什么嗎,或者這是Windows錯誤?

編輯

是的,“文件”是FileStream對象,我天真的假設在包裝文件流的流上調用close()也會通過調用FileStream.close方法來清理和處置基礎文件流。 但是我不確定。

將其包裝在using塊中仍然具有相同的效果。

還有一點需要注意的是,filestream對象是用不同的方法創建的,但這沒有什么區別

嘗試使用此代替:

using (StreamWriter sw = new StreamWriter(file))
  sw.Write(xml.OuterXml);

(或嘗試手動調用sw.Dispose()

使用或僅使用重載的方法來創建流編寫器來包裝文件流是否有幫助:

using (FileStream fs = new FileStream("path", FileMode.Append))
using (StreamWriter sw = new StreamWriter(fs))
{
    sw.Write(xml.OuterXml);
    sw.Close();
}

要么:

using (StreamWriter sw = new StreamWriter("path"))
{
    sw.Write(xml.OuterXml);
    sw.Close();
}

我懷疑問題出在創建或使用FileStream的代碼中。 也許您可以詳細說明如何使用創建的FileStream對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM