/**
* 检测目录是否为空
* @method check_empty_dir
* @param string $path 目录名
* @return boolean true|false*/
function check_empty_dir(string $path){//检测目录是否存在,存在则打开
if(!is_dir($path)){return false;
}//打开指定目录
$handle=opendir($path);//读取
while(($item=@readdir($handle))!==false){//去掉.和..操作
if($item!='.'&&$item!='..'){return false;
}
}//关闭句柄
closedir($handle);return true;
}-------------------
/**
* 读取目录下的所有文件
* @method read_directory
* @param string $path 目录名称
* @return void 直接输出目录下的所有文件及子目录*/
function read_directory(string $path){if(!is_dir($path)){return false;
}$handle=opendir($path);while(($item=@readdir($handle))!==false){if($item!='.'&&$item!='..'){$pathName=$path.DIRECTORY_SEPARATOR.$item;if(is_file($pathName)){echo '文件:',$item,'
';
}else{echo '目录:',$item,'
';$func=__FUNCTION__;$func($pathName);
}
}
}closedir($handle);
}//read_directory('a');
-------------------
/**
* 遍历目录下所有内容返回
* @method read_directory1
* @param string $path 目录名称
* @return mixed false|array*/
function read_directory1(string $path){if(!is_dir($path)){return false;
}$handle=opendir($path);while(($item=@readdir($handle))!==false){if($item!='.'&&$item!='..'){$pathName=$path.DIRECTORY_SEPARATOR.$item;if(is_file($pathName)){$arr['file'][]=$pathName;
}elseif(is_dir($pathName)){$arr['dir'][]=$pathName;$func=__FUNCTION__;$func($pathName);
}
}
}closedir($handle);return $arr;
}//$res=read_directory1('a');
// print_r($res);
-------------------
/**
* 读取目录中的所有文件
* @method get_all_files
* @param string $path 目录名称
* @return mixed false|array*/
function get_all_files(string $path){if(!is_dir($path)){return false;
}if($handle=opendir($path)){$res=[];while(($item=readdir($handle))!==false){if($item!='.'&&$item!='..'){$pathName=$path.DIRECTORY_SEPARATOR.$item;is_dir($pathName)?$res[$pathName]=get_all_files($pathName):$res[]=$pathName;
}
}closedir($handle);return $res;
}else{return false;
}
}//print_r(get_all_files('a'));
-------------------
/**
* 得到目录大小
* @method get_dir_size
* @param string $path 目录名称
* @return mixed false|int*/
function get_dir_size(string $path){if(!is_dir($path)){return false;
}static $sum=0;$handle=opendir($path);while(($item=readdir($handle))!==false){if($item!='.'&&$item!='..'){$pathName=$path.DIRECTORY_SEPARATOR.$item;if(is_file($pathName)){$sum+=filesize($pathName);
}else{$func=__FUNCTION__;$func($pathName);
}
}
}closedir($handle);return $sum;
}//echo get_dir_size('a');
-------------------
/**
* 重命名目录
* @method rename_dir
* @param string $oldName 原目录
* @param string $newName 新目录
* @return boolean true|false*/
function rename_dir(string $oldName,string $newName){//检测原文件是否存在,或者当前目录下存在同名目录
$dest=dirname($oldName).DIRECTORY_SEPARATOR.$newName;if(!is_dir($oldName)|| file_exists($dest)){return false;
}if(rename($oldName,$dest)){return true;
}return false;
}//重命名
// var_dump(rename_dir('a','aaaa'));
// var_dump(rename_dir('b','c'));
-------------------
/**
* 剪切目录
* @method cut_dir
* @param string $src 原目录
* @param string $dst 新目录位置
* @return boolean true|false*/
function cut_dir(string $src,string $dst){//检测原目录是否存在,不存在返回false
if(!is_dir($src)){return false;
}//检测目录路径是否存在,不存在则创建
if(!is_dir($dst)){mkdir($dst,755,true);
}//检测目录路径下是否存在同名目录
$dest=$dst.DIRECTORY_SEPARATOR.basename($src);if(is_dir($dest)){return false;
}//剪切
if(rename($src,$dest)){return true;
}return false;
}//var_dump(cut_dir('d','uploads'));
// var_dump(cut_dir('c','test1'));
// var_dump(cut_dir('test1','test2'));
-------------------
/**
* 拷贝目录操作
* @method copy_dir
* @param string $src 原目录
* @param string $dst 目标路径
* @return boolean true|false*/
function copy_dir(string $src,string $dst){//检测原目录是否存在
if(!is_dir($src)){return false;
}//检测目标目录是否存在,不存在则创建
if(!is_dir($dst)){mkdir($dst,755,true);
}//检测目标目录下是否存在同名文件
$dest=$dst.DIRECTORY_SEPARATOR.basename($src);if(is_dir($dest)){return false;
}$handle=opendir($src);while(($item=@readdir($handle))!==false){if($item!='.'&&$item!='..'){if(is_file($src.DIRECTORY_SEPARATOR.$item)){copy($src.DIRECTORY_SEPARATOR.$item,$dst.DIRECTORY_SEPARATOR.$item);
}if(is_dir($src.DIRECTORY_SEPARATOR.$item)){$func=__FUNCTION__;$func($src.DIRECTORY_SEPARATOR.$item,$dst.DIRECTORY_SEPARATOR.$item);
}
}
}closedir($handle);return true;
}//var_dump(copy_dir('uploads','test2/uploads'));
-------------------
/**
* 删除非空目录
* @method del_dir
* @param string $path 目录名称
* @return boolean true|false*/
function del_dir(string $path){//检测目录是否存在
if(!is_dir($path)){return false;
}$handle=opendir($path);while(($item=@readdir($handle))!==false){if($item!='.'&&$item!='..'){$pathName=$path.DIRECTORY_SEPARATOR.$item;if(is_file($pathName)){
@unlink($pathName);
}else{$func=__FUNCTION__;$func($pathName);
}
}
}closedir($handle);rmdir($path);return true;
}//var_dump(del_dir('test2'));