【发布时间】:2016-03-25 23:03:17
【问题描述】:
在这种情况下,我必须专门通过二进制文件进行用户注册,所以很遗憾,我必须这样做。 C#。
我设置了用户注册,以便将用户对象附加到 .bin 文件的末尾。用户登录将这个文件中的所有用户放入一个列表中,并搜索具有相同用户名和密码的用户。但是,我希望我的用户能够编辑他们的个人资料,所以我想要一个可以将他们的对象重新保存到文件中的功能。这就是我现在所拥有的:
BinaryFormatter bFormatter = new BinaryFormatter();
using (Stream bFile = File.Open("../../data/UserData.bin", FileMode.Append))
{
bFormatter.Serialize(bFile, Settings.User);
}
当然,尽管这只会将更新的对象附加到文件的末尾,但会留下同一对象的 2 个版本?任何人对如何进行此操作有任何建议,以便更新二进制文件中的现有对象?
【问题讨论】:
-
最简单的方法是让每个用户记录完全相同的大小。然后很容易在文件中的用户记录之间进行查找(userIndex * recordSize)。否则,您将不得不在索引等方面做大量工作,或者每次编辑时都重写整个文件。
-
你能反序列化 UserData 文件,更改用户对象,然后序列化整个东西吗?也就是说,用新序列化的版本覆盖之前的文件?
-
如何使它们的尺寸相同?
-
我知道你说过你必须这样做,但真的吗?你真的必须那样做吗?因为它没有多大意义。就个人而言,我会使用 SQL-CE 数据库。但这很容易在不了解上下文的情况下说出来。
标签: c# object serialization binaryfiles