删除指定路径下的超时文件和文件夹(目录)

最近在参与铁路项目有关图像拼接超时文件删除,这些资料在各大平台上还是很多的,在搜集了众多资料后一步步实现了最终的目标,这里做个记录:

第一步删除超时文件(但是无法删除超时文件夹)
这里只以简单的分钟超时为基准,而没有做过多的超时逻辑。


 void CMFCApplication1Dlg::OnBnClickedButton1()
{
    CFileFind  ff;
    CString  szDir = _T("D:\\铁路项目测试\\MFCApplication1\\2017年9月\\*.*");//在路径之后加  *.*   的意思是查找这个路径下的所有类型的文件
    BOOL res = ff.FindFile(szDir);
    while (res)
    {
        res = ff.FindNextFile();
        if ((!ff.IsDirectory()) &&(!ff.IsDots()))
        {
            CTime fTime;
            CTime T = CTime::GetCurrentTime();
            int y1 = T.GetYear();
            int m1 = T.GetMonth();
            int d1 = T.GetDay();
            int h1 = T.GetHour();
            int min1 = T.GetMinute();
            int s1 = T.GetSecond();
            ///////////////////////////////////////////////////类型转换 
            ff.GetCreationTime(fTime);
            int y2 = fTime.GetYear();
            int m2 = fTime.GetMonth();
            int d2 = fTime.GetDay();
            int h2 = fTime.GetHour();
            int min2 = fTime.GetMinute();
            int s2 = fTime.GetSecond();
            if ( min2 < min1)
            {
                CString path = _T("D:\\铁路项目测试\\MFCApplication1\\2017年9月\\");
                path += ff.GetFileName();
                DeleteFile(path);
            }
        }
    }
    ff.Close();
}

利用删除文件BUTTON完成了指定逻辑超时文件的删除。
IsDots判断是否为点,这个要说明一下,用过Dos的话,就应该知道,每个目录下都有缺省的两个目录,名称分别为 ‘. ‘和 ‘.. ‘,分别代表本层目录和上一层目录。因此,当我们在遍历目录下文件时,需要过滤掉这两个缺省目录。IsDirectory表明这是一个目录,isDots表明这个是.或者..而这两个东西虽然是目录,但是一个表明这个目录本身,一个代表上层目录(但是根目录下面..也是本身)

第二步将删除文件扩大至可以删除文件夹

 void CMFCApplication1Dlg::myDeleteDirectory(CString directory_path)       //删除一个文件夹下的所有内容  
{
    CFileFind finder;
    CString path = directory_path + _T("//*.*");
    BOOL bWorking = finder.FindFile(path);
    while (bWorking)
    {
        bWorking = finder.FindNextFile();
        CString res = finder.GetFileName();
        CString res1 = finder.GetFilePath();

      if (finder.IsDirectory() && !finder.IsDots())
      {//处理文件夹  
            CTime fTime;
            CTime T = CTime::GetCurrentTime();
            int y1 = T.GetYear();
            int m1 = T.GetMonth();
            int d1 = T.GetDay();
            int h1 = T.GetHour();
            int min1 = T.GetMinute();
            int s1 = T.GetSecond();
            ///////////////////////////////////////////类型转换 
            finder.GetCreationTime(fTime);
            int y2 = fTime.GetYear();
            int m2 = fTime.GetMonth();
            int d2 = fTime.GetDay();
            int h2 = fTime.GetHour();
            int min2 = fTime.GetMinute();
            int s2 = fTime.GetSecond();
        if (min2 < min1)
        {
        myDeleteDirectory(finder.GetFilePath()); //递归删除文件夹  
        RemoveDirectory(finder.GetFilePath());
        }
      }
      else
      {//处理文件  
        DeleteFile(finder.GetFilePath());
      }
    }
   }

在这里的如果将CString path = directory_path + _T(“//.“); 写成
CString path+=_T(“//.“); 有时候需要将button点两次才能删除,不知道为什么。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值