两个相同的文件根据从 C# 编写的方式具有不同的文件大小
本文关键字:方式具 文件大小 两个 文件 | 更新日期: 2023-09-27 18:30:49
我正在尝试将序列化为 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();
即使两个文件的内容相同,它们也有不同的文件大小。实际上,第一个文件的大小正好是第二个文件的两倍。我尝试使用文本板比较输出,它说它们完全相同。为什么它们的文件大小不同?
我在 Windows 7 32 位上运行它,.净4
谢谢
即使两个文件的内容相同,它们也有不同的文件大小。
如果它们的大小不同,那么它们肯定有不同的内容。文件(几乎)只是一个字节序列 - 如果两个序列具有不同的长度,则它们是不同的序列。
在这种情况下,这两个文件都表示相同的文本,但使用不同的编码 - file2
将使用 UTF-8,file1
将使用 UTF-16。
换个角度想:如果将同一张图片保存到两个文件中,一个是JPEG,一个是PNG,你会希望文件的大小相同吗?