从 CArchive 文件中检索信息
Posted
技术标签:
【中文标题】从 CArchive 文件中检索信息【英文标题】:Retrieve information from CArchive File 【发布时间】:2021-09-01 16:30:21 【问题描述】:如果我们不知道CArchive
文件中存储了哪些类型的对象,有什么方法可以从CArchive
文件中检索信息?
我想知道CArchive
文件中存储的信息格式是什么。
请帮帮我。
【问题讨论】:
CArchive
类有一个底层文件对象,并且该文件(通常)是二进制格式。所以,除非你对它的内容有所了解某些东西,否则它只是gobbledegook。
我会在二进制编辑器中打开该文件,看看您是否可以识别其中的任何字符串。如果该存档是使用 MFC 的可序列化 CObject 派生的东西创建的,您可能会看到类名。运气好的话
一个存档文件给了我。我不知道它包含什么类型的信息。无法从该存档文件中检索信息?
【参考方案1】:
文件格式记录在TN002: Persistent Object Data Format 下。虽然这解释了如何在数据流中识别对象以进行反序列化,但将数据转储到CArchive
并读回它的实际逻辑由使用@987654324 的类的CObject
派生类实现自行决定@ 和 IMPLEMENT_SERIAL
宏。
如果没有实际的(反)序列化代码,您对二进制 CArchive
流几乎无能为力,除非生成它的实现始终使用标准序列化方法,让您猜测存储的数据类型。
与 JSON 或 XML 不同,CArchive
的序列化数据不是自描述的。即使您知道任何给定数据的类型,文件中也没有包含任何语义信息的内容。
【讨论】:
以上是关于从 CArchive 文件中检索信息的主要内容,如果未能解决你的问题,请参考以下文章
反序列化在 java 中使用 mfc CArchive 创建的文件
从 CArchive 读取 WORD 变量并同时转换为 int
读取使用 CArchive Ar(&SaveDataStoreDetail, CArchive::store) 存储的数据;