我在流式传输到文件时遇到问题,我确信有一个简单的解决方案,但我很难找到它!我正在尝试做的事情非常简单,我正在获取一个类的内容并将它们序列化为 XML 并将它们流式传输到一个文件中。我正在使用的代码是:
ObservableCollection<RackItemViewModel> rackVMs = ProjectTree.GetTreeData();
XmlSerializer serializer = new XmlSerializer(typeof(RackItem));
using (TextWriter tw = new StreamWriter(filename, false))
{
foreach (RackItemViewModel VM in rackVMs)
serializer.Serialize(tw, VM.RackItem);
}
ProjectTree.GetTreeData() 只返回要序列化的数据。如果我运行程序并保存数据,它一切都按预期工作,数据将被保存并可以使用反序列化读取。我遇到的问题是当我执行多个保存时。如果我将一组数据保存到一个文件,然后将另一组数据保存到另一个文件,则第一个文件是正确的,但第二个文件是第一个文件和第二个文件的串联!似乎流或 XMLSerializer 都没有在保存之间释放它们的内容。我尝试使用 writefile 而不是 Stream,但仍然遇到同样的问题,我也尝试过刷新和关闭流,但这没有效果。不用说,如果我在保存之间关闭并重新启动应用程序,一切正常。谁能告诉我我做错了什么?