【C++】删除N天前的文件 查找指定文件

//声明
	void SearchFile(CString strDir, CString strFile);
	afx_msg	void ClearFile(UINT nDays, std::string filedir);//删除N天前的文件


//搜索指定文件
void CNewVisionOfZHDlg::SearchFile(CString strDir, CString strFile)
{
	CFileFind ff;
	CString szDir = strDir;

	if (szDir.Right(1) != "\\")
		szDir += "\\";

	szDir += "*.*";

	BOOL res = ff.FindFile(szDir);
	while (res)
	{
		res = ff.FindNextFile();
		if (ff.GetFileName() == strFile)
		{
			//找到了,加入列表框中
			//m_ctrlFilesList.AddString(ff.GetFilePath());
		}
		if (ff.IsDirectory() && !ff.IsDots())
		{
			//如果是一个子目录,用递归继续往深一层找
			SearchFile(ff.GetFilePath(), strFile);
		}
	}
	ff.Close();//关闭
}
// 功能:删除nDays天及之前的文件
// @nDays: 0-不删除日志,3-删除3天及之前的日志(保留今天、昨天、前天的日志) ...
void CNewVisionOfZHDlg::ClearFile(UINT nDays, std::string filedir) // 删除N天前的日志  ".\\TrainData\\OriData 20211025(现场)";
{
	if (nDays > 0)
	{
		WIN32_FIND_DATAA FindFileData;
		std::string filter = filedir;
		filter.append("\\");
		filter.append("*.*");
		HANDLE hFind = ::FindFirstFileA(filter.c_str(), &FindFileData);
		CTime tNowTime = CTime::GetCurrentTime();
		tNowTime = tNowTime - CTimeSpan(nDays, 0, 0, 0); // 指向nDays天前的日期  1655169307
		if (INVALID_HANDLE_VALUE == hFind) return;
		while (TRUE)
		{
			if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 遇到文件夹
			{
			}
			else // 遇到文件
			{
				CTime ft(FindFileData.ftCreationTime);//创建时间 1636600451
				std::string filefullpath = filedir;
				filefullpath.append("\\");
				filefullpath.append(FindFileData.cFileName);

				if (filefullpath.size() > 4)
				{
					if (ft < tNowTime)
					{
						::DeleteFileA(filefullpath.c_str());
					}
				}
			}
			if (!FindNextFileA(hFind, &FindFileData))//下一个文件
				break;
		}
		FindClose(hFind);
	}
}

调用:

	ClearFile(30, ".\\LOG");//删除一个月前的日志
	ClearFile(15, ".\\UnRecognizeData1");

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值