0

我需要检测特定文件是否是 boost::serialization 保存的二进制文件。查看一些文件,我看到它们的开头有 16 个字节:

0000000 0016 0000 0000 0000 6573 6972 6c61 7a69  | ........serializ
0000010 7461 6f69 3a6e 613a 6372 6968 6576 0009  | ation::archive..

这是检测此类档案的可靠顺序吗?

4

1 回答 1

2

可靠的?可能是的,只要您继续使用相同的 boost::serialization 实现。也可能跨越图书馆的更新。但是参考文档没有提到对文件魔术的任何支持,所以正式地,检查文件头的效果是未定义的,并且可能会在未来的版本中默默地中断。如果您需要健壮,最好尝试反序列化并捕获失败时抛出的任何内容。因此,对于打印信息图标的快速文件浏览器,当然,继续使用标题检测。在用于归档备份的企业系统中,没有那么多。

于 2012-05-16T08:21:40.527 回答