PHP实现删除文件夹内的文件的功能

PHP实现文件夹内的文件删除功能,大多会用到unlink这个函数。如果要删除指定的文件直接unlink(文件地址),如果要删除一个文件夹内的所有文件,肯定要遍历文件夹,或者找到一个函数能够知道文件夹内是不是有东西,如果有文件,就继续删除,删除哪一个,那么又需要一个函数实现得到文件夹内某个文件的文件名的功能。


关于遍历文件夹 PHP中在文件系统相关扩展中,有Directory这个库,

PHP实现删除文件夹内的文件的功能_第1张图片


关于这个函数的功能和语法

PHP实现删除文件夹内的文件的功能_第2张图片


那么如果系统中有文件就会返回文件名,要注意的是在使用readdir之前,必须要先使用opendir,如果不存在该文件夹就会出现报错,failed to open dir

如果存在文件夹,但是文件夹内没有文件那么就是出现两个. .. 点号,这个点号表示什么,暂时还不清楚。

在遍历读取文件夹使用了 false !==($file=readdir(‘文件夹路径’)),也就是如果能够从文件夹路径读到东西 那么我就可以输出我们的文件名。




	
  







其中,在刚开始的时候读出的文件名出现了乱码,应该系统文件编码格式的问题,简单查了一下,发现了一般新建记事本文件文档默认的编码格式是ANSI编码,为了防止这个编码出现乱码,所以就在读取的文件名中加入了iconv改变读取文件名的编码格式。

最后涉及到删除文件夹,使用到unlink这个函数,如果读到文件的名字,那么直接使用文件名删除就可以了。

PHP实现删除文件夹内的文件的功能_第3张图片


如果文件夹里面是纯文件,那么直接可以通过unlink直接删除


如果是文件夹内有文件夹那么需要用到其他函数rmdir

PHP实现删除文件夹内的文件的功能_第4张图片



所以最后的代码思路应该是这样,


PHP实现删除文件夹内的文件的功能_第5张图片


";
			if (!is_dir($file_fullpath)){
				unlink($file_fullpath);
			}else{
				rmdir($file_fullpath);
			}
		}	
	}
?>

上面这个函数应该是最底层的函数,因为rmdir这个函数只能删除空文件夹,所以,当文件夹中有文件夹的时候,首先就是要把文件夹里面的内容全部删除,所以前面可以有一系列的判断,这些判断是嵌套的,也就是说我要判断这个文件夹里面里面的是文件还是文件夹,如果是文件,那么删除,如果是文件夹呢,那么就先判断是不是空,如果空,则删除,如果不是空,那么就进去删除里面的文件和文件夹。


PHP实现删除文件夹内的文件的功能_第6张图片

所以代码的基本逻辑就是 如果是文件夹就进行一次判断 然后循环知道文件夹为空删除文件夹。

刚刚开始写这段代码,虽然我的初始想法也是函数调用它本身,但是不清楚PHP是不是具有这样的一个功能,所以最后试图自己写出来一个类似的效果,结果发现,还是会走到递归上面。


所以顺便就了解了一下递归函数的用法和一些基本概念。

PHP实现删除文件夹内的文件的功能_第7张图片

因为文件夹内的文件夹是有限的,所以递归最终是有终点的,遇到文件夹就重复调用原来的函数,然后删除文件夹之后返回上一层。最终实现一个删除文件夹的功能。






你可能感兴趣的:(PHP,文件系统)