删除指定文件夹下N天及之前的日志文件

/*
 功能:删除nDays天及之前的日志文件
 @nDays: 0-不删除日志,3-删除3天及之前的日志(保留今天、昨天、前天的日志) ...

void CRecordLog::ClearLog(UINT nDays) // 删除N天前的日志
{
 if (nDays > 0)
 {  
  WIN32_FIND_DATA FindFileData;
  CString sAllFile = m_sLogFolder + "\\*.log";
  HANDLE hFind = ::FindFirstFile(sAllFile, &FindFileData);
  if(INVALID_HANDLE_VALUE == hFind) return;
  while(TRUE)
  {
   if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 遇到文件夹
   {
    
   }
   else // 遇到文件
   {
    CString sFileName;
    sFileName.Format("%s", FindFileData.cFileName);
    if (sFileName.GetLength() == 14)
    {
     CString sFileFullPath = m_sLogFolder + "\\" + sFileName;// 文件全路径
     sFileName.Replace("-", "");
     __int64 nFileName = _atoi64(sFileName);     // 取得文件的日期,如:20101030
     CTime tNowTime = CTime::GetCurrentTime();
     tNowTime = tNowTime - CTimeSpan(nDays, 0, 0, 0);  // 指向nDays天前的日期
     __int64 nNowTime = _atoi64(tNowTime.Format("%Y%m%d"));
     if (20000000 < nFileName && nFileName < nNowTime)
     {
      ::DeleteFile(sFileFullPath);
     }
    }
   }
   if(!FindNextFile(hFind, &FindFileData))
    break;
  }

  FindClose(hFind);
 }
}*/

补充:上面被删除的日志文件的文件名格式为:2011-02-08.log

posted on 2011-02-26 14:38  清清飞扬  阅读(660)  评论(0编辑  收藏  举报