免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2580 | 回复: 10
打印 上一主题 下一主题

删除多层目录(目录非空) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-10 16:15 |只看该作者 |倒序浏览
怎样删除多层目录,目录非空;

论坛徽章:
0
2 [报告]
发表于 2007-06-10 16:19 |只看该作者

回复 1楼 yyying 的帖子

rm -rf ?
.

论坛徽章:
0
3 [报告]
发表于 2007-06-10 16:23 |只看该作者
用c++ 实现

论坛徽章:
0
4 [报告]
发表于 2007-06-10 16:24 |只看该作者
while ((de = readdir(d)))
            {
                struct stat fs;
                if (stat(de->d_name, &fs) != 0)
                {
                            std::cout << "Couldn't get stat of " << de->d_name << std::endl;
                    }

                if ((fs.st_mode & S_IFDIR) != 0)
                            rmdir(de->d_name);
                else
                            unlink(de->d_name);

           }

            closedir(d);       




我有去看rmdir 和rm 的源码,rmdir的源码很好理解,但rm的源码太长我都看晕了

论坛徽章:
0
5 [报告]
发表于 2007-06-10 16:39 |只看该作者
rm_dir(dir)
opendir
while ((de = readdir(d)))
{
        if (remove(de->d_name) < 0 && errno != EPERM)
                rm_dir(de->d_name);
}
closedir

论坛徽章:
0
6 [报告]
发表于 2007-06-10 16:40 |只看该作者

回复 4楼 yyying 的帖子

在C++中也可以调用system()函数吧.
就用system("rm -rf dir");
就可以实现的.

论坛徽章:
0
7 [报告]
发表于 2007-06-10 17:32 |只看该作者
不能用系统调用!孙燕姿就是孙燕姿!

论坛徽章:
0
8 [报告]
发表于 2007-06-10 17:33 |只看该作者
谢谢flw2了!

论坛徽章:
0
9 [报告]
发表于 2007-06-10 17:34 |只看该作者
这是我刚写的代码,我感觉还是有问题!

bool               
CFileUtility::ForceDropDir(const string& sdir)
{
        struct stat fs;
        struct dirent *de;
        if(!IsDir(sdir))
                return  false;
        bool _Result;
        DIR *d = opendir(sdir.c_str());
        if (!d)
              return    false;

        while ((de = readdir(d)))
        {
                if (stat(de->d_name, &fs) != 0)
                {
                std::cout << "Couldn't get stat of " << de->d_name << std::endl;
                    }

                if ((fs.st_mode & S_IFDIR) != 0)
                        ForceDropDir(de->d_name);
                        
                else
                        unlink(de->d_name);
        }

        rmdir(sdir.c_str());
}

论坛徽章:
0
10 [报告]
发表于 2007-06-10 19:05 |只看该作者
为什么不用我的那个,注意目录前缀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP