php同级目录编程,PHP目录操作(附封装好的目录操作函数文件)

/**

* 检测目录是否为空

* @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'));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值