====== XBufferIO ====== **//Inherited from//** NULL **//Inherited by//** NULL **//Friend class//** NULL **//Description//** XBufferIO是为文件IO构建的工具类,它从内存中开辟一块内存专门用于缓冲写入文件或从文件中读取的内容,在缓冲区满的时候一次性写出或读入新的文件内容,以提高文件IO的速度,从而有效避免频繁的硬盘IO操作所导致的性能瓶颈。 **//Members//** * Path [[xbufferio#m_strpath|m_strPath]] * DBVersion [[xbufferio#m_version|m_Version]] * void* [[xbufferio#m_pfp|m_pFp]] * int64 [[xbufferio#m_lisize|m_liSize]] * int [[xbufferio#m_iopenmode|m_iOpenMode]] * char * [[xbufferio#m_pbuf|m_pBuf]] * int [[xbufferio#m_itxtencode|m_iTxtEncode]] * int [[xbufferio#m_ibufsize|m_iBufSize]] * int [[xbufferio#m_ibufmode|m_iBufMode]] * char [[xbufferio#m_ckeyprefix|m_cKeyPrefix]] * int [[xbufferio#m_iencode|m_iEncode]] * char * [[xbufferio#g_curbufpos|g_curBufPos]] * size_t [[xbufferio#g_ibuffreesize|g_iBufFreeSize]] * int64 [[xbufferio#m_donesize|m_DoneSize]] **//Public interface//** * [[xbufferio#xbufferio1|XBufferIO]]([[xbufferio#xbufferio1|XBufferIO]]Type type,const char * path = 0,int buf_size = MEG) * [[xbufferio#~xbufferio|~XBufferIO]]() * void * [[xbufferio#getfilehandle|getFileHandle]]() * bool [[xbufferio#open|open]](IOFlag f) * bool [[xbufferio#isend|isEnd]]() * void [[xbufferio#close|close]]() * TypeID [[xbufferio#getencode|getEncode]]() * XBufferIOType [[xbufferio#type|type]]() * int64 [[xbufferio#size|size]]() * void [[xbufferio#setpath|setPath]](const char * path) * int64 [[xbufferio#getcurpos|getCurPos]]() * void [[xbufferio#settotalsize|setTotalSize]](int64 t_size) * void [[xbufferio#setcurpos|setCurPos]](int64 pos, bool bRead = false) * void [[xbufferio#setkeywordprefix|setKeywordPrefix]](char c) * bool [[xbufferio#pumpbuffer|pumpBuffer]](bool bReverse = false) * void [[xbufferio#jumpbufferend|jumpBufferEnd]]() * bool [[xbufferio#backward|backward]](int size) * bool [[xbufferio#forward|forward]](int size) * void [[xbufferio#resetbuffer|resetBuffer]]() * void [[xbufferio#flushbuffer|flushBuffer]]() * void [[xbufferio#setbuffersize|setBufferSize]](int size) * void [[xbufferio#showprogress|showProgress]]() * void [[xbufferio#writechar|writeChar]](char c) * char [[xbufferio#readchar|readChar]]() * const DBVersion & [[xbufferio#getversion|getVersion]]() * void [[xbufferio#setversion|setVersion]](int major, int minor, int sub, int build) ---- {{anchor:m_strpath}} **Path m_strPath** 被处理文件的路径 {{anchor:m_version}} **DBVersion m_Version** 被处理文件的版本号 {{anchor:m_pfp}} **void* m_pFp** 被处理文件的句柄 {{anchor:m_lisize}} **int64 m_liSize** 读入文件的大小 {{anchor:m_iopenmode}} **int m_iOpenMode** 文件打开的模式,分为二进制读取、二进制写出、文本读取、文本写出四种模式。 {{anchor:m_pbuf}} **char * m_pBuf** 内容缓冲区地址 {{anchor:m_ibufsize}} **int m_iBufSize** 内容缓冲区大小 {{anchor:m_ibufmode}} **int m_iBufMode** 缓冲区模式,二进制或者文本 {{anchor:m_ckeyprefix}} **char m_cKeyPrefix** 文件模式下,关键字的前导字符 {{anchor:m_iencode}} **int m_iEncode** 文本模式下的文本编码 {{anchor:g_curbufpos}} **char * g_curBufPos** 在缓冲区中的文件内容的当前访问地址 {{anchor:g_ibuffreesize}} **size_t g_iBufFreeSize** 缓冲区剩余空间大小 {{anchor:m_donesize}} **int64 m_DoneSize** 已经处理完的文件内容总大小(不包含缓冲区中的内容) ---- {{anchor:xbufferio1}} **XBufferIO(XBufferIOType type,const char * path = 0,int buf_size = MEG)** *function: 构造函数 *parameters: - [i][[xbufferio#xbufferio1|XBufferIO]]Type type: 缓冲区类型 - [i]const char * path = 0: 文件路径 - [i]int buf_size = MEG: 缓冲区大小 *return value: 无 {{anchor:~xbufferio}} **~XBufferIO()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:getfilehandle}} **void * getFileHandle()** *function: 获取文件句柄 *parameters: NULL *return value: 文件句柄 {{anchor:open}} **bool open(IOFlag f)** *function: 打开文件 *parameters: - [i]IOFlag f: 打开模式 *return value: 成功打开返回true,否则返回false {{anchor:isend}} **bool isEnd()** *function: 文件是否已经到达末尾 *parameters: NULL *return value: 如果文件已经达到末尾返回true,否则返回false {{anchor:close}} **void close()** *function: 关闭文件 *parameters: NULL *return value: 无 {{anchor:getencode}} **TypeID getEncode()** *function: 获取文件的编码 *parameters: NULL *return value: 编码ID {{anchor:type}} **XBufferIOType type()** *function: 获取文件的缓冲类型 *parameters: NULL *return value: 缓冲类型,二进制或文本 {{anchor:size}} **int64 size()** *function: 获取文件的大小 *parameters: NULL *return value: 文件的大小 {{anchor:setpath}} **void setPath(const char * path)** *function: 设置文件路径 *parameters: - [i]const char * path: 文件路径 *return value: 无 {{anchor:getcurpos}} **int64 getCurPos()** *function: 获取文件的当前访问位置(从文件起始开始计算) *parameters: NULL *return value: 文件的当前访问位置 {{anchor:settotalsize}} **void setTotalSize(int64 t_size)** *function: 设置文件的总大小 *parameters: - [i]int64 t_size: 文件的总大小 *return value: 无 {{anchor:setcurpos}} **void setCurPos(int64 pos, bool bRead = false)** *function: 设置文件的当前访问位置,如果是读取模式,自动从当前位置读入后续内容到缓冲区中 *parameters: - [i]int64 pos: 文件的当前访问位置 - [i] bool bRead = false: 是否读取模式 *return value: 无 {{anchor:setkeywordprefix}} **void setKeywordPrefix(char c)** *function: 设置关键字的前导字符 *parameters: - [i]char c: 关键字的前导字符 *return value: 无 {{anchor:pumpbuffer}} **bool pumpBuffer(bool bReverse = false)** *function: 读取文件内容到缓冲区中 *parameters: - [i]bool bReverse = false: 是否逆向读取,默认顺序向前读取 *return value: 成功读取返回true,如已到文件末尾返回false {{anchor:jumpbufferend}} **void jumpBufferEnd()** *function: 跳转到缓冲区末尾 *parameters: NULL *return value: 无 {{anchor:backward}} **bool backward(int size)** *function: 将当前访问位置向后(文件起始位置方向)移动size个字节 *parameters: - [i]int size: 移动的字节数 *return value: 如已经到达文件起始位置返回false,否则返回true {{anchor:forward}} **bool forward(int size)** *function: 将当前访问位置向前(文件末尾方向)移动size个字节 *parameters: - [i]int size: 移动的字节数 *return value: 如已经到达文件末尾返回false,否则返回true {{anchor:resetbuffer}} **void resetBuffer()** *function: 重置缓冲区 *parameters: NULL *return value: 无 {{anchor:flushbuffer}} **void flushBuffer()** *function: 将缓冲区所有内容写入到文件中并清空缓冲区 *parameters: NULL *return value: 无 {{anchor:setbuffersize}} **void setBufferSize(int size)** *function: 设置缓冲区大小 *parameters: - [i]int size: 缓冲区大小 *return value: 无 {{anchor:showprogress}} **void showProgress()** *function: 通过发送PUBLISH_PROGRESS事件显示文件处理进度 *parameters: NULL *return value: 无 {{anchor:writechar}} **void writeChar(char c)** *function: 写出一个字符 *parameters: - [i]char c: 字符 *return value: 无 {{anchor:readchar}} **char readChar()** *function: 读入一个字符 *parameters: NULL *return value: 读入字符 {{anchor:getversion}} **const DBVersion & getVersion()** *function: 获取文件版本信息 *parameters: NULL *return value: 文件版本信息 {{anchor:setversion}} **void setVersion(int major, int minor, int sub, int build)** *function: 设置文件版本信息 *parameters: - [i]int major: 主版本号 - [i] int minor: 小版本号 - [i] int sub: 次版本号 - [i] int build: 构建序号 *return value: 无