Irrlicht系统学习---文件系统

本文介绍了Irrlicht引擎的文件系统,包括如何获取文件系统接口、进行普通文件、XML文件、文件列表、目录文件及ZIP文件的读写操作。通过示例展示了Irrlicht提供的各种文件操作,并指出这些基础功能可用于定制项目的文件管理和存储格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

             Irrlicht系统的文件系统在顶层的接口当中提供了文件的基本读写操作,在后面的实现中分了不同的类型,提供zip文件,pak文件,XML文件以及普通文件的操作,每个用户可以根据不同的需求为自己定制一个文件类型,以及相对应的读写操作,在你的项目中可以使用压缩以及加密。

            在irrlicht系统文件系统的实现中主要有一下几种接口:

具体的一些简单操作这里给出几个小例子

文件系统的获取

IrrlichtDevice *device =createDevice( video::EDT_DIRECT3D9, dimension2d<s32>(640, 480));
   
 IFileSystem* pFileSystem = device->getFileSystem();
    pFileSystem->changeWorkingDirectoryTo("D://Irrlicht_TestFile");

普通文件的读写

IReadFile* pReadFile = pFileSystem->createAndOpenFile("./read.ini");
 int iSize = pReadFile->getSize();
 char* pReadBuf = new char[iSize+1];
 memset(pReadBuf,0,iSize+1);
 iSize = pReadFile->read(pReadBuf,iSize);
 printf("File Contents : %s/n",pReadBuf);
 delete[] pReadBuf;
 pReadFile->drop();

 IWriteFile* pWriteFile = pFileSystem->createAndWriteFile("./write.ini");
 core::stringc sWrite = "this is the file system test---file write.";
 pWriteFile->write(sWrite.c_str(),sWrite.size());
 pWriteFile->drop();

文件列表操作

IFileList* pFileList = pFileSystem->createFileList();
 int iFileCount = pFileList->getFileCount();
 pFileList->drop();

 

XML文件使用:

IrrXMLReader* pXmlReader = createIrrXMLReader("./config.xml");

 while(pXmlReader && pXmlReader->read())
 {
  switch(pXmlReader->getNodeType())
  {
  case EXN_COMMENT:
   printf("Comment : %s/n",pXmlReader->getNodeData());
   break;
  case EXN_TEXT:
   printf("Text : %s/n",pXmlReader->getNodeData());
   break;
  case EXN_ELEMENT:
   {
    printf("Node Name : %s/n",pXmlReader->getNodeName());
    int iCount = pXmlReader->getAttributeCount();
    for (int i=0;i<iCount;i++)
    {
     printf("Attribute (%s) --- Value (%s)/n",pXmlReader->getAttributeName(i),pXmlReader->getAttributeValue(i));
    }
   }
   break;
  default:
   break;
  }
 }

 delete pXmlReader;

 

目录文件

if (pFileSystem->addFolderFileArchive("./Files"))
 {
  IReadFile* pFoldReadFile = pFileSystem->createAndOpenFile("a_read.ini");
  iSize = pFoldReadFile->getSize();
  pReadBuf = new char[iSize+1];
  memset(pReadBuf,0,iSize+1);
  iSize = pFoldReadFile->read(pReadBuf,iSize);
  printf("Zip File Contents : %s/n",pReadBuf);
  delete[] pReadBuf;
  pFoldReadFile->drop();
 }

ZIP文件


 delete pXmlReader;

 if (pFileSystem->addZipFileArchive("./archive.zip"))
 {
  IReadFile* pZipReadFile = pFileSystem->createAndOpenFile("./config/config.xml");
  iSize = pZipReadFile->getSize();
  pReadBuf = new char[iSize+1];
  memset(pReadBuf,0,iSize+1);
  iSize = pZipReadFile->read(pReadBuf,iSize);
  printf("Zip File Contents : %s/n",pReadBuf);
  delete[] pReadBuf;
  pZipReadFile->drop();

  IWriteFile* pZipWriteFile = pFileSystem->createAndWriteFile("./write.ini");
  core::stringc sWrite = "this is the file system test---Zip file write.";
  iSize = 0;
  iSize = pZipWriteFile->write(sWrite.c_str(),sWrite.size());
  pZipWriteFile->drop();
 }

 

最后要drop掉设备

device->drop();

 

不过这些应该是不能满足正常的项目开发,所以,用这些基础开发自己的文件操作和存储格式吧!在irrlicht文件系统的基础之下完成这些应该是非常简单的了!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值