保存数据到文件的设计思路
最近在做一个把树结构保存到本地文件的功能,然后下次从文件中读取树结构,功能能完成了。 但如果想增加新的节点属性DWORD Size,就需要手动去维护 在保存的地方再写入新的属性4个字节,
//保存树的代码是这样的
WriteFile(hFile,pTree->value1 , ...)//写入树的每个字段属性
WriteFile(hFile,pTree->value2 , ...)//写入树的每个字段属性
WriteFile(hFile,pTree->value3 , ...)//写入树的每个字段属性
WriteFile(hFile,pTree->value4 , ...)//写入树的每个字段属性
字段中也会 有字符串, 会先写个字符串大小,后面跟着字符串,但读取的地方也必须先读个字符串大小,再读字符串数据。
写入时 字段大小 和属性 是什么顺序,从文件中读取时 也必须按照这个顺序,否则就会出错。
现在想给树增加个属性字段,也保存到文件,字段为:DWORD dwSize = 0;
然后读取树结构的地方 增加读取4个字节,并且读取字段属性的顺序 和大小 也要跟写入时顺序一致:
DWORD dwSize = 0;
ReadFile(hFile,&dwSize,4,dwRet,0);
得到大小之后,在赋值到相应的属性
Tree pTree = new Tree;
pTree->size = dwSize;
但这样每次增加或删除,都要在写入文件 和读取文件的地方 手动维护,很麻烦 也很容易出错,一不小心,属性读取的先后顺序弄错了,整个树就没办法恢复过来了 。 有没有一种比较好的设计思路 可以让删除和修改同步化,即 保存到文件 字段 和字段顺序是怎样的,读取的时候就按照写入的那样读取, 值维护保存到文件的地方就可以。
有比较好的设计思路吗
[解决办法]
另外做一个windows的小工具,专门用于修改这个数据文件。