我需要检测特定文件是否是boost :: serialization保存的二进制文件。看几个文件,我看到它们在开头有16个字节:
0000000 0016 0000 0000 0000 6573 6972 6c61 7a69 | ........serializ
0000010 7461 6f69 3a6e 613a 6372 6968 6576 0009 | ation::archive..
这是检测此类档案的可靠序列吗?
答案 0 :(得分:2)
可靠?可能是的,只要你继续使用boost :: serialization的相同实现。可能还有库的更新。但是参考文档没有提到对文件魔术的任何支持,所以正式地说,检查文件头的效果是未定义的,并且可能在将来的版本中默默地中断。如果你需要健壮,最好尝试反序列化并捕获失败时抛出的任何内容。因此,对于打印信息图标的快速文件浏览器,请务必使用标题检测。在用于归档备份的企业系统中,没有那么多。