?? 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 + -