文件已在使用FileAccess C#

1 c# filestream

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();
    }
Run Code Online (Sandbox Code Playgroud)

每当我尝试将数据输出到.dat文件时,我都会收到错误消息,说明该文件已在使用中.我该如何解决?

EDT:原来它不会让我保存到一个空文件所以我创建一个新的空格来输入数据然后它允许我保存在文件上.

Eri*_* J. 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

using关键字是语法上的快捷方式

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

outFile无论是否抛出异常,都确保处置(也将其关闭).