我正在尝试恢复使用 97-2003 版本的 word 文档。我不记得我为什么这样做,但我将复合文件流保存到一个文件夹中,这绝对是我希望作为原始文档返回的东西。有什么解决办法吗?
谢谢!
当然,理论上你应该能够恢复它。
您应该能够使用创建根复合文档
StgCreateDocfile() // or StgCreateStorageEx()
IStorage*
如果成功,您将需要来自 this 的指针。
如果您的文件夹中有一个文件夹,您将不得不为每个文件夹创建子存储 - 并以递归方式进行。API是IStorage::CreateStorage()
……查一下。
如果文件夹中有文件,则需要在与文件夹等效的存储中创建流。要创建流,请使用IStorage::CreateStream()
...查找参数。
查看您的屏幕截图,它有一些名为 [1]CompObj 或 [5]SummaryDocumentInformation 的流。对于 [n] 部分,这可能相当于 _T('\00n') ,其中 n 为 1 或 5 或其他 - 它可能是一个控制字符。我在复合文件中看到过。如果要进行调查,请创建 Word 97-2003 文档并另存为 .doc 文件并检查结构。
所以,像 [1]CompObj 这样的东西真的是 _T("\001CompObj")
上面关于文件名中的 [n] 的内容是有根据的/有经验的猜测。