📄 tfile.cpp
字号:
#include "StdAfx.h"
#include "TFile.h"
#include "RelationData.h"
CTFile::CTFile(void) : m_pFile(NULL)
{
}
CTFile::~CTFile(void)
{
if( m_pFile )
{
fclose( m_pFile );
}
}
int CTFile::CreateEmptyFile( const char* strName, unsigned int FileSize, FILE** ppFile )
{
int nRet = -1;
FILE *pFile = NULL;
do
{
pFile = fopen( strName, "wb" );
if( pFile == NULL ) break;
char ch[512]= {0};
for( unsigned long i=0; i<FileSize/512; i++ )
{
fwrite( &ch, sizeof(char), 512, pFile );
}
nRet = fseek( pFile, 0, SEEK_END );
if( nRet != 0 ) break;
fpos_t curpos;
nRet = fgetpos( pFile, &curpos );
if( nRet != 0 ) break;
if( curpos == FileSize )
nRet = 0;
else
nRet = -1;
} while(0);
if( pFile )
{
*ppFile = pFile;
}
return nRet;
}
BOOL CTFile::GetFileHeader(void* pData )
{
return GetItem( 0, pData );
}
BOOL CTFile::OpenFile(const char* FileName, BOOL* IsNewFile )
{
int nRet = 0;
*IsNewFile = FALSE;
if( m_pFile )
{
fclose( m_pFile );
}
m_pFile = fopen( FileName, "r+b" );
if( m_pFile == NULL )
{
nRet = CreateEmptyFile( FileName, RELATION_FILE_SIZE, &m_pFile );
*IsNewFile = TRUE;
}
if( nRet == 0 && m_pFile )
{
return TRUE;
}
else
{
return FALSE;
}
}
int CTFile::WriteFile( FILE *pFile, const void* buf, unsigned int bufsize, long pos )
{
int nRet = -1;
do
{
nRet = fseek( pFile, pos, SEEK_SET );
if( nRet != 0 ) break;
size_t writesize = fwrite( buf, sizeof(char), bufsize, pFile );
if( writesize == (size_t)bufsize )
nRet = 0;
else
nRet = -1;
} while(0);
return nRet;
}
int CTFile::ReadFile( FILE *pFile, void* buf, unsigned int BufSize, long pos )
{
int nRet = -1;
do
{
nRet = fseek( pFile, pos, SEEK_SET );
if( nRet != 0 ) break;
size_t readsize = fread( buf, sizeof(char), BufSize, pFile );
if( readsize == (size_t)BufSize )
nRet = 0;
else
nRet = -1;
} while(0);
return nRet;
}
BOOL CTFile::GetItem(long pos, void* pData )
{
int nRet = -1;
do
{
if( m_pFile == NULL ) break;
nRet = ReadFile( m_pFile, pData, DATA_UNIT, pos*DATA_UNIT );
} while( 0 );
return nRet == 0 ? TRUE : FALSE;
}
BOOL CTFile::WriteItem(long pos, void* pData )
{
int nRet = -1;
do
{
if( m_pFile == NULL ) break;
nRet = WriteFile( m_pFile, pData, DATA_UNIT, pos*DATA_UNIT );
} while(0);
return nRet == 0 ? TRUE : FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -