定期删除旧的日志文件(日志文件存在指定的目录中)
2014-04-28 23:18
996 查看
#define DELETE_INTERVAL_SECOND (15*24*60*60) // 删除15天之前的日志文件 // 获取日志文件的最后修改时间 // 参数:strFilePath[in], sysTime[out] __int64 GetFileModifyTime( LPCTSTR strFilePath ) { SYSTEMTIME sysTime; HANDLE hFile = INVALID_HANDLE_VALUE; FILETIME localFileTime; WIN32_FIND_DATA wfd; memset( &wfd, 0, sizeof(wfd) ); hFile = FindFirstFile( strFilePath, &wfd ); if ( hFile == INVALID_HANDLE_VALUE ) { return 0; } BOOL bRet = FileTimeToLocalFileTime( &wfd.ftLastWriteTime, &localFileTime ); if ( !bRet ) { return 0; } memset( &sysTime, 0, sizeof(sysTime) ); bRet = FileTimeToSystemTime( &localFileTime, &sysTime ); if ( !bRet ) { return 0; } FindClose( hFile ); tm tmTime = { sysTime.wSecond, sysTime.wMinute, sysTime.wHour, sysTime.wDay, sysTime.wMonth-1, sysTime.wYear-1900, sysTime.wDayOfWeek, 0, 0 }; return mktime( &tmTime ); } void DeleteLogFile( LPCTSTR strLogPath ) { if ( !PathFileExists( strLogPath ) ) { return; } time_t tCurTime = time( NULL ); // 获取当前时间 tstring strFindFileName = strLogPath; strFindFileName += _T("\\*.*"); WIN32_FIND_DATA wfd; HANDLE hFindFile = FindFirstFile( strFindFileName.c_str(), &wfd ); if ( hFindFile == INVALID_HANDLE_VALUE ) { return; } while ( true ) { if ( wfd.cFileName[0] != _T('.') ) {// 非本级或上级目录 if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) // 目录 { if ( !FindNextFile( hFindFile, &wfd ) ) { break; } continue; } else if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM ) // 系统文件,不处理 { if ( !FindNextFile( hFindFile, &wfd ) ) { break; } continue; } else // 用户日志文件 { tstring strLogFile = strLogPath; strLogFile += _T("\\"); strLogFile += wfd.cFileName; time_t tModifyTime = GetFileModifyTime( strLogFile.c_str() ); // 如果是15天之前的文件,则将之删除掉(拿当前时间和文件的最后修改时间作比较) if ( tCurTime - tModifyTime > DELETE_INTERVAL_SECOND ) { DeleteFile( strLogFile.c_str() ); } } } if ( !FindNextFile( hFindFile, &wfd ) ) { break; } }; FindClose( hFindFile ); }
相关文章推荐
- 比对2个文件夹,删除已存在,或者 删除指定目录下,按文字开头(结束)文件
- linux面试题:删除一个目录下的所有文件,但保留一个指定文件
- 删除目录下指定日期之前的文件命令
- java递归删除指定目录下的文件和文件夹
- linux 下pyhton 删除指定目录下所有的重复内容的文件
- 删除指定目录下几天前文件,bat
- 递归删除当前目录下所有指定的目录和文件
- Java 删除目录 指定文件
- 将指定目录下的某些 af8e 相同类型的文件打成zip包存放到指定目录下面并删除原文件
- linux命令---删除一个目录下的所有文件,但保留一个指定文件
- iOS 记录系统运行日志到指定文件目录
- python--文件删除、判断目录存在、字符串替换
- bat 删除指定目录下带后缀的文件
- NO.49 删除某目录下所有指定名称的文件(比如批量删除vssver.scc)
- shell脚本删除目录下的指定文件
- 删除指定目录下指定的文件(非并发)
- 删除一个目录下的所有文件但保留一个指定文件
- python目录遍历和删除指定目录下的pyc文件
- Linux删除指定目录文件脚本
- C#直接删除指定目录下的所有文件及文件夹(保留目录)