开源项目BNBT可用于其他项目中的文件操作部分
View Code
#include "stdafx.h"
#include <string.h>
#include <iostream>
#include "time.h"
using namespace std;
void UTIL_LogPrint( const char *format, ... )
{
::OutputDebugString(format);
}
void UTIL_DeleteFile( const char *szFile )
{
if( unlink( szFile ) == 0 )
UTIL_LogPrint( "deleted \"%s\"\n", szFile );
else
{
#ifdef WIN32
UTIL_LogPrint( "error deleting \"%s\"\n", szFile );
#else
UTIL_LogPrint( "error deleting \"%s\" - %s\n", szFile, strerror( errno ) );
#endif
}
}
void UTIL_MakeFile( const char *szFile, string strContents )
{
FILE *pFile = NULL;
if( ( pFile = fopen( szFile, "wb" ) ) == NULL )
{
UTIL_LogPrint( "warning - unable to open %s for writing\n", szFile );
return;
}
fwrite( (void *)strContents.c_str( ), sizeof( char ), strContents.size( ), pFile );
fclose( pFile );
}
bool UTIL_CheckFile( const char *szFile )
{
// check if file exists
FILE *pFile = NULL;
if( ( pFile = fopen( szFile, "r" ) ) == NULL )
return false;
fclose( pFile );
return true;
}
string UTIL_ReadFile( const char *szFile )
{
FILE *pFile = NULL;
if( ( pFile = fopen( szFile, "rb" ) ) == NULL )
{
UTIL_LogPrint( "warning - unable to open %s for reading\n", szFile );
return string( );
}
UTIL_LogPrint( "open %s for reading\n", szFile );
fseek( pFile, 0, SEEK_END );
unsigned long ulFileSize = ftell( pFile );
fseek( pFile, 0, SEEK_SET );
char *pData = (char *)malloc( sizeof( char ) * ulFileSize );
memset( pData, 0, sizeof( char ) * ulFileSize );
fread( (void *)pData, sizeof( char ), ulFileSize, pFile );
fclose( pFile );
string strFile( pData, ulFileSize );
free( pData );
return strFile;
}
void UTIL_MoveFile( const char *szFile, const char *szDest )
{
if( UTIL_CheckFile( szDest ) )
UTIL_LogPrint( "error archiving \"%s\" - destination file already exists\n", szDest );
else
UTIL_MakeFile( szDest, UTIL_ReadFile( szFile ) );
// thanks MrMister
UTIL_DeleteFile( szFile );
}
void UTIL_CopyFile( const char *szFile, const char *szDest )
{
if( UTIL_CheckFile( szDest ) )
UTIL_LogPrint( "error archiving \"%s\" - destination file already exists\n", szDest );
else
UTIL_MakeFile( szDest, UTIL_ReadFile( szFile ) );
}
string UTIL_GetLocalTimeString()//edited 不保证跨平台性
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
char year[5];
char mon[3];
char day[3];
char hour[3];
char min[3];
char sec[3];
strftime(year,5,"%Y",timeinfo);
strftime(mon,3,"%m",timeinfo);
strftime(day,3,"%d",timeinfo);
strftime(hour,3,"%H",timeinfo);
strftime(min,3,"%M",timeinfo);
strftime(sec,3,"%S",timeinfo);
string timestr;
timestr.append(year);
timestr.append(mon);
timestr.append(day);
timestr.append(hour);
timestr.append(min);
timestr.append(sec);
return timestr;
}
void CreateDir(const char *DirPath)//edited 不保证跨平台性
{
CreateDirectory(DirPath,NULL);
}
#include <string.h>
#include <iostream>
#include "time.h"
using namespace std;
void UTIL_LogPrint( const char *format, ... )
{
::OutputDebugString(format);
}
void UTIL_DeleteFile( const char *szFile )
{
if( unlink( szFile ) == 0 )
UTIL_LogPrint( "deleted \"%s\"\n", szFile );
else
{
#ifdef WIN32
UTIL_LogPrint( "error deleting \"%s\"\n", szFile );
#else
UTIL_LogPrint( "error deleting \"%s\" - %s\n", szFile, strerror( errno ) );
#endif
}
}
void UTIL_MakeFile( const char *szFile, string strContents )
{
FILE *pFile = NULL;
if( ( pFile = fopen( szFile, "wb" ) ) == NULL )
{
UTIL_LogPrint( "warning - unable to open %s for writing\n", szFile );
return;
}
fwrite( (void *)strContents.c_str( ), sizeof( char ), strContents.size( ), pFile );
fclose( pFile );
}
bool UTIL_CheckFile( const char *szFile )
{
// check if file exists
FILE *pFile = NULL;
if( ( pFile = fopen( szFile, "r" ) ) == NULL )
return false;
fclose( pFile );
return true;
}
string UTIL_ReadFile( const char *szFile )
{
FILE *pFile = NULL;
if( ( pFile = fopen( szFile, "rb" ) ) == NULL )
{
UTIL_LogPrint( "warning - unable to open %s for reading\n", szFile );
return string( );
}
UTIL_LogPrint( "open %s for reading\n", szFile );
fseek( pFile, 0, SEEK_END );
unsigned long ulFileSize = ftell( pFile );
fseek( pFile, 0, SEEK_SET );
char *pData = (char *)malloc( sizeof( char ) * ulFileSize );
memset( pData, 0, sizeof( char ) * ulFileSize );
fread( (void *)pData, sizeof( char ), ulFileSize, pFile );
fclose( pFile );
string strFile( pData, ulFileSize );
free( pData );
return strFile;
}
void UTIL_MoveFile( const char *szFile, const char *szDest )
{
if( UTIL_CheckFile( szDest ) )
UTIL_LogPrint( "error archiving \"%s\" - destination file already exists\n", szDest );
else
UTIL_MakeFile( szDest, UTIL_ReadFile( szFile ) );
// thanks MrMister
UTIL_DeleteFile( szFile );
}
void UTIL_CopyFile( const char *szFile, const char *szDest )
{
if( UTIL_CheckFile( szDest ) )
UTIL_LogPrint( "error archiving \"%s\" - destination file already exists\n", szDest );
else
UTIL_MakeFile( szDest, UTIL_ReadFile( szFile ) );
}
string UTIL_GetLocalTimeString()//edited 不保证跨平台性
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
char year[5];
char mon[3];
char day[3];
char hour[3];
char min[3];
char sec[3];
strftime(year,5,"%Y",timeinfo);
strftime(mon,3,"%m",timeinfo);
strftime(day,3,"%d",timeinfo);
strftime(hour,3,"%H",timeinfo);
strftime(min,3,"%M",timeinfo);
strftime(sec,3,"%S",timeinfo);
string timestr;
timestr.append(year);
timestr.append(mon);
timestr.append(day);
timestr.append(hour);
timestr.append(min);
timestr.append(sec);
return timestr;
}
void CreateDir(const char *DirPath)//edited 不保证跨平台性
{
CreateDirectory(DirPath,NULL);
}