|
请到www.gamedevelop.net上的本站原创中下载……
压缩包中包括了dll,lib,头文件,实例,文档,以及一个文件打包压缩工具(JSFilePacker),支持epk格式!
下载
/////////////////////////////////////////////////////////////////////////////////////////////
简介
MDFile是一款使用方便、易于扩展的文件系统库,其扩展性体现在两个方面:
1.MDFile内部的epk(extendable package)文件格式的压缩编码方案通过edl(encoding/decoding library)插件可以扩展
2.MDFile支持的压缩包文件可扩展。默认的,MDFile只能打开后缀为.epk的文件格式,通过dll插件的扩展,可以支持zip,rar,lzh.....格式,只要有相应的插件库就可以了
特点:
1.使用简单
2.可扩展,通过edl或者epk方式扩展
3.支持外部检索(loss file)特性
4.epk格式安全性高,使用高效加密方案加密,保护数据的安全性
5.epk格式支持目录存储结构
6.epk格式支持单包多编码存储方式,能更有效压缩数据
支持平台:
VC++6,Microsoft Windows system
函数接口:
CMD_File();
初始化一个CMD_File的实例。
CMD_File(char *ProviderName);
初始化一个CMD_File的实例,同时挂接一个FileProvider。
void EnableShowErrorMSG(bool bshowerr); // 允许or禁止弹出错误信息
参数:当出现错误时是否需要弹出一个错误警告窗口。
bshowerr=true - 弹出错误警告窗口
bshowerr=false - 不要弹出
返回值:无
说明:当你进行一个CMD_File的操作的时候(比如:执行一个ConnectFileProvider("zipext.dll")),可能产生一个错误,例如zipext.dll不存在,这时MDFile会记录一个错误信息,如果此时EnableShowErrorMSG设置成true,系统就会弹出一个警告窗口,告诉你出错了。如果此时EnableShowErrorMSG是false,系统不会弹出一个警告窗口,但是你可以使用GetErrorCode来检索这个错误代码。
void EnableExtraFileFolder(bool bEnable); // 打开or禁用扩展搜索
参数:是否允许外部检索
返回值:无
说明:当你读取一个文件的时候,如果指定了外部检索为true,那么系统首先会在对应的文件夹中搜索是否存在这个文件,如果不存在才去读取文件包中的文件。如:
CMD_File file;
EnableExtFileFolder(true);
file.Open("test.epk");
file.LocateFile("hi.txt");
file.Read(); // 此时如果存在在test.epk文件一起的一个test文件夹,同时test文件夹下有hi.txt则系统会读取test文件夹下的hi.txt文件。如果不存在hi.txt文件系统才会读取test.epk包里的hi.txt文件
void SetExtFilePath(char *path); // 设置扩展搜索路径
参数:外部检索的基目录
返回值:无
说明:外部检索的目录规则是:基目录+文件包主名,如:SetExtFilePath
bool ConnectFileProvider(char *ProviderName); // 联接到外部FileProvider
void FreeProvider(); // 释放FileProvider
bool Open(char* FileName,bool bReadOnly=true,bool bPacked=false,char *password=NULL);
void Close();
bool LocateFile(char* PathName,char *password=NULL); // 定位一个文件
DWORD GetFileSize(); // 取得当前文件的大小
bool Read(LPBYTE *buffer=NULL,DWORD size=0); // 读取当前文件数据到引擎缓冲
bool Write(LPCVOID buffer,DWORD size); // 写入当前文件
bool Seek(long move, BYTE method=FILE_CURRENT); // 移动当前文件指针
LPBYTE GetBuffer(){ return m_lpBuffer; } // 取得文件数据缓冲
DWORD GetBufferLen(){ return m_BufferLen; }
bool WriteBufferToFile(char *PathName); // 将缓冲区数据写入文件
====================================================================================
@J--S Studio
www.gamedevelop.net
中国游戏开发技术资讯网
==================================================================================== |
|