Archive类
Archive类代表文件容器。FileSystemArchive代表普通的文件容器,也就是文件夹。在Ogre中它还派生了ZipArchive。在上面的UML图中没有给出。Archive中给出了一些存虚函数:比如:
virtual StringVectorPtr list(bool recursive = true ) = 0;
virtual FileInfoListPtr listFileInfo(bool recursive = true ) = 0;
这两个函数用于列出Archive中所有文件的名字或信息。
virtual StringVectorPtr find(const String& pattern, bool recursive = true) = 0;
virtual FileInfoListPtr findFileInfo(const String& pattern,
bool recursive = true) = 0;
这两个函数列出和给定模式匹配的文件的名字或信息。
virtual void load() = 0;
virtual void unload() = 0;
这两个函数用于载入和卸载Archive,也搞不清楚有什么用,在Archive的具体类FileSystemArchive中也没什么功能,甚至Unload的实现为空。可能载入和卸载只是标记一下,在ArchiveManager中专门有一个map用于对已载入的文件的管理。
还有个比较重要的函数就是:
virtual DataStreamPtr open(const String& filename) const = 0;
它基于给定的文件名打开这个Archive中的一个文件返回这个文件的流.我们就可以通过这个DataStreamPtr来操作文件了。DataStream主要方法是对文件的读取操作,比如readLine等方法。注意因为返回了共享指针,所以这里没有相应得close方法。Ptr对象可以自己控制生命周期。
FileSystemArchiveFactory类
FileSystemArchiveFactory类用于创建和销毁FileSystemArchive,并规定它的ArchiveType为FileSystem。
ArchiveManager类
ArchiveManager类用于管理ArchiveFactory,而且负责Archive的载入。
今天一个网友在群里发了一个OGRE中的鱼,很可爱,贴出来: