php中创建多级目录与删除多级目录和文件

原创
2016-06-08 17:24:49 808浏览

在php中要实现简单的目录创建和删除分别利用mkdir和rmdir这有点像dos中的命令了,但如果我要创建多级目录或删除多级目录中的文件和目录则需要递归来实例了。

php中mkdir创建多级目录

代码如下 复制代码
function mkdirs($dir)
{ if(!is_dir($dir))
{ if(!mkdirs(dirname($dir)))
{ return false; }
if(!mkdir($dir,0777))
{ return false; } }
return true;
}

调用方法

mkdirs('div/css/layout');


创建多级目录更标准的方法

代码如下 复制代码

//检查并创建多级目录
function checkDir($path){
$pathArray = explode('//m.sbmmt.com/m/',$path);
$nowPath = '';
array_pop($pathArray);
foreach ($pathArray as $key=>$value){
if ( ''==$value ){
unset($pathArray[$key]);
}else{
if ( $key == 0 )
$nowPath .= $value;
else
$nowPath .= '//m.sbmmt.com/m/'.$value;
if ( !is_dir($nowPath) ){
if ( !mkdir($nowPath, 0777) ) return false;
}
}
}
return true;
}

删除多级目录方法

在winxp下测试成功,只要php文件编码为gb2312,文件名随意,应该把文件名改为编码为gb2312,就行,没测

代码如下 复制代码

header("Content-Type:text/html; charset=gb2312");
if(deleteDir('./复件 复件 复件 复件 复件 复件 复件 复件 复件 复件 复件 aaa'))
echo "删除成功";
function deleteDir($dir)
{
if (@rmdir($dir)==false && is_dir($dir)) //删除不了,进入删除所有文件
{
if ($dp = opendir($dir))
{
while (($file=readdir($dp)) != false)
{
if($file!='.' && $file!='..')
{ //echo $file=$dir.'//m.sbmmt.com/m/'.$file;echo '
';
$file=$dir.'//m.sbmmt.com/m/'.$file;
if (is_dir($file)) //是真实目录
{
deleteDir($file);
}else {
unlink($file);
}
}
}
closedir($dp);
}else
{
return false;
}
}
if (is_dir($dir) && @rmdir($dir)==false) //是目录删除不了
return false;
return true;
}
?>

递归删除多级目录

同样的思路,php用rmdir和unlink递归删除多级目录的代码:

代码如下 复制代码

function rmdirs($dir)
{
$d = dir($dir);
while (false !== ($child = $d->read())){
if($child != '.' && $child != '..')
{
if(is_dir($dir.'//m.sbmmt.com/m/'.$child))
rmdirs($dir.'//m.sbmmt.com/m/'.$child);
else
unlink($dir.'//m.sbmmt.com/m/'.$child); }
}
$d->close();

//调用方法也很简单只要给目录就好
rmdir($dir);
}

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。