Head First C# 中文版 第九章 读写文件 page430

来源:互联网 发布:太空工程师编程模块api 编辑:程序博客网 时间:2024/06/06 00:09

 

找到文件在哪儿有区别,并用该信息来修改文件


 

你刚刚写的循环刚好指出了两个序列化文件的区别。由于两个对象的区别仅仅就是其花色和牌面值,所以文件的区别也应该在于此。所以如果我们找到了存储花色和牌面值的字节,我们应该就可以把它改造成我们想要的新牌。


 

③观察控制台的输出,看看两个文件有什么区别


 

控制台应该会显示出有两个字节不同:


 

Byte #218: 1 versus 3

Byte #266: 3 versus 6


 

这很能说明问题!回去上一章看看Card.Suits枚举,你会发现1代表方片,3代表红桃,所以这就是第一个区别。第二个不同就是--63--很明显这是牌面值。你可能会看见不同的字节值,不用惊讶:因为你可能使用了不同的命名空间,那会改变文件的长度。


 

还记得命名空间也会被包含在序列化文件中吗?如果你的命名空间不同,那字节数也会不同。如果文件中的第218个字节代表花色,那么我们应该可以通过读取文件并改变这一个字节再把它写回去来改变牌的花色。(记住,你自己的序列化文件可能会把花色存储在不同的位置。)


 

④手动的写代码来写一个包含黑桃老K的新文件


 

我们要把读取来的数组修改一下,让它包含一张新牌,再把它写出去。


 

原创粉丝点击