1
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 来输入数据,然后它允许我保存文件。

4

2 回答 2

5

直接的答案是“释放某个进程对文件的锁定”。

某些东西已经打开了文件。您需要查看可能访问该文件的代码和其他进程以找到根本原因。

我注意到您没有使用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无论是否抛出异常都已处理(也将其关闭)。

于 2013-02-25T21:22:15.350 回答
0

你可以试试这个:

outFile.Dispose();
于 2013-02-25T21:21:50.797 回答