【发布时间】:2012-04-10 13:12:43
【问题描述】:
我正在尝试将序列化为 JSON 格式的对象数组写入文件。我正在尝试以两种不同的方式编写它,如下所示。
ToSerialise[] Obj = new ToSerialise[10];
for (int i = 0; i < 10; i++)
{
Obj[i] = new ToSerialise();
}
//First form of serialising
UnicodeEncoding uniEncoding = new UnicodeEncoding();
String SerialisedOutput;
SerialisedOutput = JsonConvert.SerializeObject(Obj, Formatting.Indented);
FileStream fs1 = new FileStream(@"C:\file1.log", FileMode.CreateNew);
fs1.Write(uniEncoding.GetBytes(SerialisedOutput), 0, uniEncoding.GetByteCount(SerialisedOutput));
fs1.Close();
//Second form of serialising
FileStream fs2 = new FileStream(@"C:\file2.log", FileMode.CreateNew);
StreamWriter sw = new StreamWriter(fs2);
JsonWriter jw = new JsonTextWriter(sw);
JsonSerializer js = new JsonSerializer();
jw.Formatting = Formatting.Indented;
js.Serialize(jw, Obj);
jw.Close();
fs2.Close();
即使两个文件的内容相同,它们的文件大小也不同。实际上,第一个文件的大小正好是第二个文件的两倍。我尝试使用 textpad 比较输出,它说它们完全一样。为什么它们的文件大小不同?
我在 Windows 7 32 位 .Net4 上运行它
谢谢
【问题讨论】:
-
您是否尝试过打开在 WinHex 或类似文件中生成的两个文件?这可以让您在原始十六进制中识别它们之间的差异,并可能帮助您找出导致它们以不同文件大小保存的原因。
-
“两个相同的文件具有不同的文件大小”。这只是术语上的矛盾。
-
@EJP 没错,没错,但一些文件比较实用程序显示的文件相同。我现在也有同样的问题。问题是如何(在我的情况下,第二个文件的大小约为 200%!)。
标签: c# json serialization file-io encoding