C语言删除指定日期的文件夹,C++删除指定文件夹下N天及之前日志文件的方法

本文实例讲述了C++删除指定文件夹下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

希望本文所述对大家的C++程序设计有所帮助。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值