PHP 删除文件 文件夹(级联)
作者:Benoy 时间:2011/3/3 邮箱:yayiba5@qq
问题:一个目录(复杂的目录,多个文件夹嵌套,文件夹里边还有多个文件).
目标: 删除这个目录,且目录下的一切都删除.
思路:先删除文件夹里边的文件,然后再删除空文件夹.
方法:递归删除
目录结构如下:(红是:文件夹 黑:文件)
---image
---我的照片
---a.jpg
---b.jpg
---个人肖像
---me.gif
---him.gif
---朋友照片
---其他文件夹
---.......
---..........
---同事照片
---空文件夹
---空2文件夹
---yy.jpg
---bbb.jpg
具体PHP函数列表
自定义函数
delFileByDir($dir) 删除文件夹中的所有文件
delDirByDir($dir) 删除文件中最后一层文件夹(注意:不是全部文件夹)
系统函数
scandir(String) 返回一个文件夹里边内容列表(包括文件和文件夹)
count(Array) 返回数组里边个数
php延时函数rmdir(String) 删除目录
unlink(String) 删除问文件
删除过程
if(file_exists($sDir)){
//先删除文件
$this->delFileByDir($sDir);
//删除文件夹(除了参数目录不删除外,里边所有的目录都删除)
while(count(scandir($sDir))!=2)
$this->delDirByDir($sDir);
//删除参数目录
$this->delDirByDir($sDir);
}
具体函数:
//删除所有文件
function delFileByDir($dir)
{
if(is_dir($dir)){
$list = scandir($dir);
if($list)
foreach($list as $file){
if($file!="."&&$file!=".."){
$tmp = $dir."/".$file;
if(is_dir($tmp)){
$this->delFileByDir($tmp);
}else{
@unlink($tmp);
}
}else{
continue;
}
}
}else{
@unlink($dir);
}
}
//删除最后一个目录
function delDirByDir($dir)
{
$list = scandir($dir);
if(count($list)>2){
foreach($list as $file){
if($file!='.'&&$file!='..'){
$tmp = $dir."/".$file;
$this->delDirByDir($tmp);
}
}
}else{
@rmdir($dir);
}
}
经过测试成功,不过没有经过严格的测试,有兴趣的朋友可以调试调试,完善一下,看的不是很明白的朋友,我就再举个删除文件夹的例子,文章开头我列出来个image(假如绝对路径是d:/image)目录,就这个了,使用很简单的。
if(file_exists("d:/image")){
$this->delFileByDir("d:/image");
while(count(scandir("d:/image"))!=2)
$this->delDirByDir("d:/image");
$this->delDirByDir("d:/image");
}
作者:Benoy 时间:2011/3/3 邮箱:yayiba5@qq
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论