📄 xiofile.h
字号:
#if !defined(__xiofile_h)
#define __xiofile_h
#include "xfile.h"
#if CXIMAGE_SUPPORT_UCOS
#include "ucfsdef.h"
#endif
class DLL_EXP CxIOFile : public CxFile
{
protected:
unsigned char cbuf[512];
unsigned short curlen;
unsigned short bufpos;
unsigned int curpos;
public:
CxIOFile()
{
}
CxIOFile(FILE* fp = NULL)
{
m_fp = fp;
m_bCloseFile = (bool)(fp==0);
}
~CxIOFile()
{
fclose(m_fp);
}
//////////////////////////////////////////////////////////
bool Open(const char *filename, const char *mode)
{
if (m_fp) return false; // Can't re-open without closing first
m_fp = fopen(filename, mode);
if (!m_fp)
{
printf(" sorry ! Can not open this file \n");
return false;
}
m_bCloseFile = true;
curlen = 0;
curpos = (unsigned int)-1;
return true;
}
//////////////////////////////////////////////////////////
virtual bool Close()
{
int iErr = 0;
if ( (m_fp) && (m_bCloseFile) ){
fclose(m_fp);
m_fp = NULL;
}
return (bool)(iErr==0);
}
//////////////////////////////////////////////////////////
virtual size_t Read(void *buffer, size_t size, size_t count)
{
if (!m_fp) return 0;
curpos =(unsigned int) -1;
return fread(buffer, size, count, m_fp);
}
//////////////////////////////////////////////////////////
virtual size_t Write(const void *buffer, size_t size, size_t count)
{
if (!m_fp) return 0;
return fwrite(buffer, size, count, m_fp);
}
//////////////////////////////////////////////////////////
virtual bool Seek(long offset, int origin)
{
if (!m_fp) return false;
return (bool)(fseek(m_fp, offset, origin) == 0);
}
//////////////////////////////////////////////////////////
virtual long Tell()
{
if (!m_fp) return 0;
return ftell(m_fp);
}
//////////////////////////////////////////////////////////
virtual long Size()
{
if (!m_fp) return -1;
long pos,size;
pos = ftell(m_fp);
fseek(m_fp, 0, SEEK_END);
size = ftell(m_fp);
fseek(m_fp, pos,SEEK_SET);
return size;
}
//////////////////////////////////////////////////////////
virtual bool Flush()
{
//if (!m_fp) return false;
return 1;//(bool)(fflush(m_fp) == 0);
}
//////////////////////////////////////////////////////////
virtual bool Eof()
{
if (!m_fp) return true;
return 1;//(bool)(feof(m_fp) != 0);
}
//////////////////////////////////////////////////////////
virtual long Error()
{
if (!m_fp) return -1;
return ferror(m_fp);
}
//////////////////////////////////////////////////////////
virtual bool PutC(unsigned char c)
{
//if (!m_fp) return false;
//return (bool)(fputc(c, m_fp) == c);
}
//////////////////////////////////////////////////////////
virtual long GetC()
{
unsigned int ret;
//printf("no getC!\n");
/*
unsigned int pos;
if (!m_fp) return EOF;
pos = ftell(m_fp);
if(curpos != pos)
{
curpos = pos;
ret = fread(cbuf, 1, 512, m_fp);
if(ret == 0)
return EOF;
curlen = ret;
bufpos = curpos % 512;
}
ret = cbuf[bufpos++];
*/
if(fread(&ret, 1, 1, m_fp) == 0)
return EOF;
return ret;
}
//////////////////////////////////////////////////////////
protected:
FILE *m_fp;
bool m_bCloseFile;
///////////////////////////////////////////////////////////
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -