释放资源并安全删除文件

时间:2014-10-07 12:54:24

标签: c# .net

我正在使用下面的代码将数据序列化为myObject

 public static void SerializeObject(string filename, MyObject objectToSerialize)
 {
      Stream stream = File.Open(filename, FileMode.Create);
      BinaryFormatter bformatter = new BinaryFormatter();
      bformatter.Serialize(stream, objectToSerialize);
     stream.Close();                
 }

此代码工作正常,但我在删除临时文件时出现问题(此处显示为参数(文件名))。

我假设上面的方法代码中存在问题,那么如何释放此代码使用的任何资源,以便我可以删除文件。

1 个答案:

答案 0 :(得分:1)

我在尝试您的程序时删除文件没有任何问题,但我认为您应该使用以下内容:

public static void SerializeObject(string filename, MyObject objectToSerialize)
{
    var stream = File.Open(filename, FileMode.Create);
    BinaryFormatter bformatter = new BinaryFormatter();
    bformatter.Serialize(stream, objectToSerialize);
    stream.Close();                
}

我不确定转换为Stream的FileStream会导致任何问题,但它可能无论如何都不会。

但这甚至可能更容易,更简单,因为它确保流正确关闭:

    public static void SerializeObject(string filename, Object objectToSerialize)
    {
        using (var stream = File.Open(filename, FileMode.Create))
        {
            BinaryFormatter bformatter = new BinaryFormatter();
            bformatter.Serialize(stream, objectToSerialize);
        }
    }

如果您找到了重现问题的方法,请告诉我:正如我所提到的,我可以在执行您的功能后仍然运行该程序时删除该文件,因此我无法重现您的问题。

相关问题