簡體   English   中英

文件已在使用中FileAccess C#

[英]File is already in use FileAccess C#

public void WriteListToFile(Lists lists, string filePath)
    {
        FileStream outFile;
        BinaryFormatter bFormatter = new BinaryFormatter();

        // Ppen file for output
        outFile = new FileStream(filePath, FileMode.Create, FileAccess.Write);

        // Output object to file via serialization
        bFormatter.Serialize(outFile, lists);

        // Close file
        outFile.Close();
    }

每當我嘗試將數據輸出到.dat文件時,都會收到一條錯誤消息,指出該文件已在使用中。 我該如何解決?

EDT:事實證明,它不允許我保存到一個空文件,所以我創建了一個新的void來輸入數據,然后它允許我保存該文件。

直接的答案是“釋放某些進程對該文件的鎖定”。

已經打開了文件。 您需要查看可能會訪問該文件的代碼和其他過程以找到根本原因。

我注意到您沒有使用using語句。 如果在您顯示的代碼塊中引發了異常,則將永遠不會執行outputFile.Close() ,從而使文件保持打開狀態。

嘗試重寫您的代碼(以及任何類似的代碼),例如

public void WriteListToFile(Lists lists, string filePath)
{    
    BinaryFormatter bFormatter = new BinaryFormatter();

    // Ppen file for output
    using (FileStream outFile = new FileStream(filePath, FileMode.Create, FileAccess.Write))
    {

        // Output object to file via serialization
        bFormatter.Serialize(outFile, lists);

        // Close file
        outFile.Close();
    }
}

using關鍵字是的語法快捷方式

var outFile = new FileStream(filePath, FileMode.Create, FileAccess.Write);
try 
{
    // Do stuff with outFile
}
finally 
{
    outFile.Dispose();
}

並確保處理outFile (也將其關閉),無論是否引發異常。

您可以嘗試以下方法:

outFile.Dispose();

暫無
暫無

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

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