在这种情况下,我必须通过二进制文件专门进行用户注册,所以不幸的是,我必须这样做。 C#。
我已设置用户注册,以便将用户对象附加到.bin文件的末尾。用户登录将此文件中的所有用户收入列表,并搜索具有相同用户名和密码的用户。但是,我希望我的用户能够编辑他们的配置文件,所以我想要一个将其对象重新保存到文件的功能。这就是我现在所拥有的:
BinaryFormatter bFormatter = new BinaryFormatter();
using (Stream bFile = File.Open("../../data/UserData.bin", FileMode.Append))
{
bFormatter.Serialize(bFile, Settings.User);
}
当然,虽然这只会将更新的对象附加到文件的末尾,但是会留下相同对象的2个版本吗?任何有关如何进行此操作的建议,以便更新二进制文件中的现有对象?
答案 0 :(得分:1)
您有几个选择:
1)如果您知道该用户对象的特定字节数总是保持不变,那么只需用新数据覆盖这些特定字节。
2)如果每个记录使用的每个字节数和存储在文件中的数量都可以更改,那么您可以用零或空覆盖特定用户记录(字节)并附加新记录。您的文件大小将继续增加。
3)如果每个记录使用的每个字节数和存储在文件中的数量都可以更改,则回读所有数据,修改它并创建一个新的“.bin”文件。
4)如果每个用户记录都是一个设置大小,那么只需覆盖这些字节(即在文件中找到起始位置并覆盖x个字节。