我用递归做了一个删除目录和目录下文件,子目录的例子,子目录和文件删掉了可是根目录却删不掉

zhouxiansheng 2003-09-18 10:09:55
我用递归做了一个删除目录和目录下文件,子目录的例子,子目录和文件删掉了可是根目录却删不掉
...全文
39 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤必有邻 2003-11-10
  • 打赏
  • 举报
回复
关于删除目录(当然包括文件),我见过这么干的:

SHFILEOPSTRUCT op={0};
op.wFunc = FO_DELETE;
op.pFrom = "c:\\aaa\\bbb";
op.fFlags = FOF_SILENT|FOF_NOCONFIRMATION|FOF_ALLOWUNDO;
SHFileOperation(&op);
nullname 2003-11-10
  • 打赏
  • 举报
回复
void RecursiveDelete(CString szPath)
{
CFileFind ff;
CString path=szPath;

if(path.Right(1)!="\\")
path+="\\";
path+="*.*";
BOOL res=ff.FindFile(path);
while(res)
{
res=ff.FindNextFile();
if(!ff.IsDots() && !ff.IsDirectory())
DeleteFile(ff.GetFilePath());
else if(ff.IsDots())
continue;
else if(ff.IsDirectory())
{
path=ff.GetFilePath();
RecursiveDelete(path);
RemoveDirectory(path);
}
}
RemoveDirectory(szPath);
}
bcpl 2003-09-19
  • 打赏
  • 举报
回复
oh,是有点问题,改正一下

void DeleteFolder(CString sPath)
{
CFileFind ff;
BOOL bFound;
bFound = ff.FindFile(sPath + "\\*.*");
while(bFound)
{
bFound = ff.FindNextFile();
CString sFilePath = ff.GetFilePath();

if(ff.IsDirectory())
{
if(!ff.IsDots())
DeleteFolder(sFilePath);
}
else
{
if(ff.IsReadOnly())
{
SetFileAttributes(sFilePath, FILE_ATTRIBUTE_NORMAL);
}
DeleteFile(sFilePath);
}

}
ff.Close();
SetFileAttributes(sPath, FILE_ATTRIBUTE_NORMAL);
RemoveDirectory(sPath);
}
mikko11 2003-09-19
  • 打赏
  • 举报
回复
d:\aaa\
在aaa下还有个文件夹bbb,用上面的代码,可以删除文件,bbb里的文件也能删除,可bbb文件夹删不掉
liangbch 2003-09-19
  • 打赏
  • 举报
回复
根目录在格式化磁盘时建立,并且不能删除,如果没有根目录,这个磁盘就不能使用了。
bcpl 2003-09-18
  • 打赏
  • 举报
回复
不贴出代码怎么知道为什么删不掉,可以参考用CFileFind写的删除目录函数,没发现这种问题

void DeleteFolder(CString sPath)
{
CFileFind ff;
BOOL bFound;
bFound = ff.FindFile(sPath + "\\*.*");
while(bFound)
{
bFound = ff.FindNextFile();
CString sFilePath = ff.GetFilePath();

if(ff.IsReadOnly())
{
SetFileAttributes(sFilePath, FILE_ATTRIBUTE_NORMAL);
}

if(ff.IsDirectory())
{
if(!ff.IsDots())
DeleteFolder(sFilePath);
}
else
{
DeleteFile(sFilePath);
}

}
RemoveDirectory(sPath);
}

void CDddd1Dlg::OnButton1()
{
DeleteFolder("c:\\testdir");
AfxMessageBox("done");
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧