使用Ogre读取文件

Ogre为我们实现了一个叫做Archive的类:文档存档类(我的理解是一个文件系统的目录,或者一个压缩包)。
使用该类可以读取指定目录中的指定文件,并且返回该文件的数据流DataStream,之后就可以使用数据流来获取文件中的内容。

使用Archive读取文件代码:

// 使用Archive来读取文件系统目录(压缩文件目录)

void ReadFileFromPath(const String& dirPath)
{

   String type = "FileSystem";

   // 根据路径创建档案文件对象

   Archive* pArchive = ArchiveManager::getSingletonPtr()->load(dirPath, type, true);

  // 列出所有的文件名

  StringVectorPtr filenames = pArchive->list(true);

  StringVector::iterator it = filenames->begin();

  for (; it != paths->end(); ++it)
 {
      String temp = *it;
      DataStreamPtr fileStream = pArchive->open(temp);
      // 将文件内容读取到字符传中
      String str = fileStream->getAsString();
      // 获取一整行内容
      fileStream->getLine(true);
      ....
 }

 //创建文件
 //pArchive->create("filename");

}

实际上Archive::open函数内部是创建的c++标准库的filestream来进行读写文件,因此只要是filestream可以实现的功能Archive都可以实现。
Archive是一个抽象类,Ogre已经实现了两个具体的Archive类,分别是FileSystemArchive和ZipArchive类,一个用于读取系统文件系统中的文件,另一个用于读取压缩包(Zip)中的文件。

你可能感兴趣的:(使用Ogre读取文件)