php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码
在MFC中没有提供API函数删除非空文件夹 A(目录),所以要想删除一个非空文件夹(目录)必须先删除里面的文件。
这里需要注意一个问题,如果非空文件夹(目录)下还有文件夹(目录)AA:
1、如果文件夹 AA是空的,那就好办,直接RemoveDirectory()搞定。
2、如果 AA不是空的呢?......如果你想得比较深一点的话,应该会想到,万一 AA还有AAA,AAA还有AAAA呢?...有点恐怖,╮(╯3╰)╭
是的,你此刻应该想到了递归吧,好的,递归先暂时不管,回到正题。
目的还是只有一个,删除非空文件夹 A!!!
既然如此,那么我们还是只好写一个小小的算法删除里面的数据噢,对的,就是你刚才想到的递归!:-)
下面是网上很流行的一个思路及其代码:(不是我写的 :-) )
1 //删除文件夹目录(非空)2 boolDeleteDirectory(char*sDirName)3 {4 CFileFind tempFind;
5 charsTempFileFind[MAX_PATH] ;6 7 sprintf(sTempFileFind,"%s\\*.*",sDirName);8 BOOL IsFinded=tempFind.FindFile(sTempFileFind);9 while(IsFinded)10 {11 IsFinded=tempFind.FindNextFile();12 13 if(!tempFind.IsDots())14 {15 charsFoundFileName[MAX_PATH];16 strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));17 18 if(tempFind.IsDirectory())19 {20 charsTempDir[MAX_PATH];21 sprintf(sTempDir,"%s\\%s",sDirName,sFoundFileName);22 DeleteDirectory(sTempDir);//嵌套函数23 }24 else25 {26 charsTempFileName[MAX_PATH];27 sprintf(sTempFileName,"%s\\%s",sDirName,sFoundFileName);28 DeleteFile(sTempFileName); // DeleteFile(sTempFileName)貌似也行的29 }30 }31 }32 tempFind.Close();33 if(!RemoveDirectory(sDirName))34 {35 returnFALSE;36 }37 returnTRUE;38 }
函数说明:
1、要删除的目录通过参数char * sDirName传递进去,可以是相对路径的,比如“.\\tmp”;
2、FindFile 函数是用来查找是否在指定的目录A 下存在子文件Aa 及文件夹AA,当找到返回真;
3、FindNextFile MSDN中的返回值定义是:Nonzero indicates success. Zero indicates failure. To get extended error information, call . If no matching files can be found, the GetLastError function returns ERROR_NO_MORE_FILES.(很多XXNextXX函数都是先要XXFirstXX一次的,这里是FindFile 算例外麽?)
4、IsDots 函数,熟悉dos 环境的童鞋都知道一个目录下存在“.”和“..”(还没想起麽?自己去输入一个“dir”命令看看就知道了),“.”代表上一层目录,“..”代表本层目录。所以呢在查找文件的时候应首先过滤掉这两个特殊目录。如果你逐步调试这个函数的时候你会发现每进一个新的目录查找都会首先多执行两次if(!tempFind.IsDots)。
5、RemoveDirectory 函数只能删除空文件夹,最后记得调用一次才能保证完成任务。
ps:我不记得代码是在哪里找的了,我在这里感谢无私的作者! :-)
php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码相关推荐
- 新建一个文件夹服务器,云服务器中新建文件夹命令
云服务器中新建文件夹命令 内容精选 换一换 部署提供可视化.一键式部署服务,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化.本节通过以下五步介绍如何使用部署服务将项目代码部署到云主机 ...
- vs2017解决方案列表添加文件夹与实际目录中的文件夹对应
1.在工程头文件以及源文件上分别右键->添加->新建筛选器 2.命令saveFiles 3.将需要添加的文件夹放入工程目录,文件夹名可以与新建的筛选器同名也可以不同名 4.选中头文件下的s ...
- java 创建文件夹的方法_java中创建文件夹的方法
java中创建文件夹的方法 发布时间:2020-06-10 11:46:49 来源:亿速云 阅读:461 作者:Leah 这篇文章给大家分享的是java中创建文件夹的方法.小编觉得挺实用的,因此分享给 ...
- android 浏览文件夹,如何浏览android中的文件夹并获取所选文件夹的路径
当我单击一个按钮,显示一个文件浏览器时,我可以选择一个文件夹并返回它的路径.我得到这个路径将文件复制到该路径. 但我不知道如何实现这一点. 我还在Stackoverflow中寻找这个问题,但我没有找到 ...
- 怎么用计算机搜索文件夹,如何在电脑中查找文件_如何在电脑里查找文件-win7之家...
电脑上的文件太多了,要找一个文件都要有很久的时间来找,还是一个一个的找又忘了放在了那个文件夹里,这时我们就可以用电脑的搜索功能来找就会很方便,那么要如何在电脑中查找文件呢,下面小编给大家分享在电脑里查 ...
- 云服务器中新建文件夹命令,云服务器中新建文件夹命令
云服务器中新建文件夹命令 内容精选 换一换 本指导适用于用户做网页301重定向时参考使用.装有IIS的服务器做301重定向在IIS里把网站正常发布,例如域名为www.aaa.com.在硬盘上建一个空文 ...
- 服务器文件夹和电脑文件夹同步软件哪个好,windows文件同步备份软件-文件夹同步工具哪个好?...
曾有个客户致电询问自己一些重要的数据保存至D盘文件夹内,但是这些文件经常会改动,每次都是的手动复制粘贴至移动硬盘备份保存,有没有什么工具可以实现一键同步备份?今天就给大家介绍windows文件同步备份 ...
- perl 循环删除指定文件夹下所有满足条件的文件,不包含文件夹
需求:perl 二秒钟循环删除指定文件夹下所有满足条件的文件,不包含文件夹,若要删除文件夹另作处理,加一个判断 目录格式:D:\Users\XXXXXXX\Desktop\Test\023\20160 ...
- 服务器c盘有个inetpub文件夹,关于C盘中的inetpub文件夹在win10电脑中的删除处理方法...
win10的系统是很多的小伙伴在选择安装系统的时候都会会选择的,那在电脑中有小伙伴需要清理电脑中的文件夹的时候发现C盘中有一个inetpub文件夹的设置的,那在遇到这个问题我们应该怎么办呢,今天小编就 ...
- 服务器c盘logs文件夹,Win10系统Logs文件夹有什么作用?Logs文件夹可以删除吗?
Windows系统中一般都会有一个Logs文件夹,它能够记载系统运行的一些记录,我们可以使用记事本将它打开.最近,有Win10系统的用户,在查看电脑的时候发现有一个Logs文件夹,不知道Logs文件夹 ...
最新文章
- Fiddler抓取APP网络请求
- C# 7.0中的解构功能---Deconstruct
- Dynamic Routing-中科院西交旷视(孙剑团队)提出用于语义分割的动态路由网络,精确感知多尺度目标,代码已开源!...
- java中簇如何表示_聚簇索引和非聚簇索引实际上是什么意思?
- Linux命令详解系列(一)——find命令详解
- django 博客一
- Undertow 实现反向代理
- 【POJ1442】Black Box
- git提交代码 visual_git/github相关介绍
- Linux开机启动一些知识点
- C语言课程设计-工资管理系统
- 啮齿类动物大尺度功能网络
- linux系统图形界面
- Release That Record Lock!
- 4.9冰箱的温度c语言,话说夏天冰箱温度调到多少度为最佳?
- python爬虫记一次cookie翻车
- 小技巧,怎么查看数据库热度排名
- AD软件关于覆铜的高级规则设置
- html语言对奇偶数行设置颜色,纯CSS实现奇偶数行颜色交替(兼容主流浏览器)
- Discuz论坛升级攻略及踩坑处理
热门文章
- 奇异值分解SVD与PCA
- 解决 Ext.Ajax.request 同步请求实现问题 (Ext3.0)
- 学习 WCF (4)--学会使用配置文件
- 恢复【谷歌浏览器开发者工具】默认设置(亲测)
- python之环境变量(测试环境可配置)(亲测)
- nginx 如何实现读写限流的方法
- Linux下安装Redis并添加PHP扩展(自己测试了没有问题)
- HTTP一次完整的http请求所经历的步骤
- Git强制覆盖还原本地救火命令
- Ascii排序(按字母从小到大排序),并以url地址传参方式拼接