[英]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.