2 qq 28254507 qq_28254507 于 2016.02.27 10:57 提问

MFC RemoveDirectory()后CreateDirectory()失败的问题

MFC RemoveDirectory()后CreateDirectory()失败的问题
不知道怎么回事。。
当我删除文件夹后再创建同名文件夹时竟然失败了。。
删除的函数是正常的,先递归删除文件夹内所有文件,然后把此空文件夹删掉

调试时感觉貌似RemoveDirectory()有一定延时。。因为我执行完删除函数打开路径查看删除情况时,发现被删除的文件夹还在。。接着重新创建就失败了。。

但是如果我执行创建文件夹,然后再删除,打开路径查看时文件夹已经移除了。。

这是怎么回事啊。。

    DeleteFolder(m_fileName + "\\" + ptheTree->GetItemText(m_item));
    RemoveDirectory(m_fileName + "\\" + ptheTree->GetItemText(m_item));
 void TreeView::DeleteFolder(CString directory_path)
{
    CFileFind finder;
    CString path;
    path.Format("%s/*.*", directory_path);
    BOOL bWorking = finder.FindFile(path);
    while (bWorking){
        bWorking = finder.FindNextFile();
        if (finder.IsDirectory() && !finder.IsDots()){            //处理文件夹  
            DeleteFolder(finder.GetFilePath());          //递归删除文件夹  
            RemoveDirectory(finder.GetFilePath());
        }
        else{                                                     //处理文件  
            DeleteFile(finder.GetFilePath());
        }
    }
}

1个回答

caozhy
caozhy   Ds   Rxr 2016.02.27 13:32
已采纳

RemoveDirectory,如果你的目录下面有文件或者子目录,必须先删除它们,否则会导致失败。

qq_28254507
qq_28254507 这个我注意到了。递归就是先把文件夹内所有文件删除完了,使之成为空文件夹再删除的。这里我已经找到问题了。因为没有关闭FindFirstFile创建的搜索句柄
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!