容器:复合文件

本文说明复合文件中的元素和实现和使用复合文件的优点和缺点。您的 OLE 应用程序。

复合文件是 OLE 的组成部分。 它们用于便于数据传输,并且 OLE 文档存储。 复合文件是用于激活结构化存储模型的实现。 支持序列化到存储、流或文件对象的一致性接口存在。 复合文件 Microsoft 基础类库中支持由类 COleStreamFileCOleDocument

备注

使用复合文件不提示信息来自 OLE 文档或多个文档。复合文件是一种存储多个文档, OLE 文档和其他数据。

复合文件的元素

复合文件的 OLE 实现使用三个对象类型:流对象、存储对象和 ILockBytes 对象。 这些对象以下方式类似于标准文件系统的元素:

  • 流对象,如文件,该文件存储任何类型的数据。

  • 存储对象,如内容,可以包含其他存储和流对象。

  • LockBytes 对象表示存储对象和物理硬件之间的接口。 它们确定实际字节如何编写对任何存储设备 LockBytes 对象访问,如一个硬盘驱动器或全局内存区域。 有关 LockBytes 对象和 ILockBytes 接口的更多信息,请参见 OLE 程序员参考

复合文件的优点和缺点

复合文件提供不可用的优点提供文件存储更早的方法。 它们包括:

  • 增量文件访问权限。

  • 文件访问方式。

  • 文件结构的标准化。

如果在您的应用程序时应考虑复合文件的潜在缺点 —大小和性能问题与磁盘存储的相关 ),以便决定使用它们。

ydd3k45e.collapse_all(zh-cn,VS.110).gif对文件的增量访问

对文件的增量访问是使用复合文件的自动优点。 由于复合文件中查看作为该文件中的一个 “文件系统”,各个对象类型,如流或存储,可访问,而无需加载整个文件。 这可以显着减少应用程序的用户需要编辑的访问新对象的时间。 增量更新,根据相同的概念,提供类似的优点。 而不是保存整个文件将所做更改保存到一个对象, OLE 保存用户编辑的仅流或存储对象。

ydd3k45e.collapse_all(zh-cn,VS.110).gif文件访问方式

可以确定对对象的更改在复合文件中时提交到磁盘。使用复合文件的另一优势。 文件访问,进程或处理模式,确定更改时间。

  • 事务模式使用一个两阶段提交操作对对象进行的更改在复合文件,从而保留可用文档的旧值和新副本,直到用户选择用来保存或撤消更改。

  • 直接方式合并到文档的更改,则会提交,,而无需此功能后移除它们。

有关访问模式的更多信息,请参见 OLE 程序员参考

ydd3k45e.collapse_all(zh-cn,VS.110).gif标准化

复合文件的标准化结构允许不同的 OLE 应用程序将您的 OLE 应用程序创建的复合文件浏览不实际创建文件应用程序的知识。

ydd3k45e.collapse_all(zh-cn,VS.110).gif范围和性能注意事项

由于复合文件存储机制和能够的复杂增量保存数据,文件使用此格式大于其他文件往往使用非结构化或 “平面文件”存储。 如果您的应用程序通常加载和保存文件,使用复合文件比 noncompound 文件可能会导致文件大小快速提高。 由于复合文件可以用访问,文件的访问时存储了然后从软盘加载了可能也受到影响,导致对文件的较慢的访问。

另一议题影响性能是复合文件碎片。 复合文件的大小取决于文件和最后一个磁盘扇区之间的差异使用的第一个。 一个零碎的文件可能包含不包含数据可用的多个区域,但是,计数,当计算该范围。 在复合文件的生存期内,这些区域由存储对象插入或删除创建。

使用您的数据的复合文件格式

在成功创建具有记录类的应用程序之后从 COleDocument派生的,确保主文档构造函数调用 EnableCompoundFile。 当应用程序向导创建 OLE 容器应用程序时,将调用而不是插入。

OLE 程序员参考,请参见 IStreamIStorageILockBytes

请参见

参考

COleStreamFile 类

COleDocument 类

概念

容器

容器:用户界面问题