0

我在流式传输到文件时遇到问题,我确信有一个简单的解决方案,但我很难找到它!我正在尝试做的事情非常简单,我正在获取一个类的内容并将它们序列化为 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,但仍然遇到同样的问题,我也尝试过刷新和关闭流,但这没有效果。不用说,如果我在保存之间关闭并重新启动应用程序,一切正常。谁能告诉我我做错了什么?

4

2 回答 2

0

我想我会整理这个线程,因为我已经设法解决了这个问题。事实证明,这与数据的序列化或流式传输无关。正在写入的数据缓冲区没有完全释放写入之间的数据。我正在检查 View Model 对象,该对象没问题,但正在写入的对象(RackItem)没有遵循套件。我的愚蠢错误。感谢您的建议。

于 2012-08-17T16:01:45.510 回答
0

在写入新文件之前,请尝试刷新流tw.Flush()

于 2012-08-15T09:39:26.520 回答