我正在使用下面的代码将数据序列化为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();
}
此代码工作正常,但我在删除临时文件时出现问题(此处显示为参数(文件名))。
我假设上面的方法代码中存在问题,那么如何释放此代码使用的任何资源,以便我可以删除文件。
答案 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);
}
}
如果您找到了重现问题的方法,请告诉我:正如我所提到的,我可以在执行您的功能后仍然运行该程序时删除该文件,因此我无法重现您的问题。