#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);
}