【发布时间】:2015-08-17 15:47:48
【问题描述】:
我尝试将 json 格式的数据作为字符串检索并将其写入文件,效果很好。现在我正在尝试使用 MemoryStream 做同样的事情,但没有任何内容写入文件 - 只是 [{},{},{},{},{}] 没有任何实际数据。
我的问题是 - 我如何检查数据是否确实正确进入内存流,或者问题是否发生在其他地方。我知道 myList 确实包含数据。
这是我的代码:
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer dcjs = new DataContractJsonSerializer(typeof(List<myClass>));
dcjs.WriteObject(ms, myList);
using (FileStream fs = new FileStream(Path.Combine(Application.StartupPath,"MyFile.json"), FileMode.OpenOrCreate))
{
ms.Position = 0;
ms.Read(ms.ToArray(), 0, (int)ms.Length);
fs.Write(ms.ToArray(), 0, ms.ToArray().Length);
ms.Close();
fs.Flush();
fs.Close();
}
【问题讨论】:
-
并不是说这会解决您的问题,但可以考虑使用Stream.CopyTo Method 清理代码。
-
ms.Read(ms.ToArray(), 0, (int)ms.Length);为什么要读取内存流,覆盖dcjs.WriteObject放入的所有内容?这似乎是您的问题,不要重置流位置并自行改写。 -
为什么要在 FileStream 之前写入 MemoryStream?但是使用 .net 4.0 你应该可以访问
Stream.CopyTo(Stream)。 -
我尝试了 ms.CopyTo(fs) 但得到了相同的结果
-
@ElenaDBA 问题不在于您的文件写入。问题出在您的序列化程序中。
标签: c# json memorystream