用mfc写的程序,我需要删除指定路径下所有的空文件夹,文件夹可能层数很深,有的文件夹里可能有文件,有的没有,把没有的删掉,不知道意思是否描述的清楚了。不知道怎么做了,用cfilefind有问题,没能删掉空文件夹。求助各位大神。

解决方案 »

  1.   


    void RemoveDirs(CString vi_csPath)
    {
        CFileFind finder;
        bool bWorking = finder.FindFile(vi_csPath);
        while(bWorking)
        {
            bWorking = finder.FindNextFile();
            if (finder.IsDirectory() && !finder.IsDots())
            {
                RemoveDirs(finder.GetFilePath());
                RemoveDirectory(finder.GetFilePath());
            }
            else
            {
                //文件如何处理?我需要保留下来。而且遍历,需要遍历到最深层才能知道是否有文件存在吧。不知道如何实现
            }
        }
        return;
    }
    请指导
      

  2.   

    RemoveDirectory 本身就只能空删除文件夹 有文件的删除会返回FALSE//稍改一下 试试看void RemoveDirs(CString vi_csPath)
    {
        CFileFind finder;
        CString strPath = vi_csPath;
        if(strPath.Right(1) != _T('\\'))
           strPath += _T('\\');
        strPath += _T("*.*");
        bool bWorking = finder.FindFile(strPath);
        while(bWorking)
        {
            bWorking = finder.FindNextFile();
            if (finder.IsDirectory() && !finder.IsDots())
            {
                RemoveDirs(finder.GetFilePath());
                RemoveDirectory(finder.GetFilePath());
            }
        }
        finder.Close();
        return;
    }
      

  3.   

    我这儿直接UploadDataMFC.exe 中的 0x7c92e8e5 处未处理的异常: 0xC0000005: 写入位置 0x00030f50 时发生访问冲突
      

  4.   

    按逻辑应该是,
    找 目录
    进入目录
    在目录中找文件。
    记录文件个数。
    退出这个目录
    查文件个数是不是0空。
    是 删除该目录。
    // 简单的
    找目录
    RemoveDirectory 本身就只能空删除文件夹 有文件的删除会返回FALSE
    找 下个目录