繁体   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