php_目录操作

@目录操作的相关函数


	#打开目录 
	 $dir = opendir('./wanghui_demo');
  	 var_dump($dir);
	#读取目录
	 $file_name = readdir($dir);
  	 var_dump($file_name);
  	 $file_name = readdir($dir);
  	 var_dump($file_name);
	#关闭目录
	closedir($dir);
	#创建目录
	mkdir('wanghui_demo');
	if (!file_exists('wanghui_demo')){
		mkdir('wanghui_demo');//(如果不存在就创建) else{
		echo '目录存在';
		}
		//嵌套方式创建目录
		格外加两个参数 (权限\true) 
		0777 是最高权限   设置为true表示允许嵌套的方式创建  默认为false
		mkdir('./wanghui/wang/hui',0777,true);
		
	#删除目录
	rmdir('wanghui_demo'); //只能删除一个空目录
	#返回路径中目录部分
	dirname();
	$dir_name= dirname();
  	 var_dump($dir_name);
	#返回路径中文件名称
	basename();
	$base_name= basename();
  	 var_dump($base_name);
	#获取路径信息
	pathinfo();  // 返回一个数组,数组中包含目录部分.文件部分.文件后缀.文件名称
	$path = 'wanghui.com/88/01_wanghui.php'//定义一个路径
	$info=pathinfo($path);
	 var_dump($info);

@统计目录和文件个数

header('Content-type:text/html;charset=utf-8');
//统计目录个数和文件个数
$path = './wanghui_demo';
//目录个数
$dirnum = 0;
//文件个数
$filenum = 0;
function total ($path,&$dirnum,&$filenum){  //一定要记得加&
	//打开目录
	$dir = opendir($path);
	//读取目录
	while($filename = readdir($dir)){
		//过滤掉'.'和'..'
		if($filename !='.' && $filename !='..'){
			//拼接完整路径信息
			$newPath = $path.'/'.$filename; //这里是filename不是newPath!
			// echo $filename."<br>";
			//判断读取的内容是文件还是目录
			if(is_dir($newPath)){
				//调用自身函数
				total ($newPath,$dirnum,$filenum);
				//目录数++;
				$dirnum ++;   //关闭 目录就相当于一个函数完事,就+1,继续判断下一个目录或文件
			} else {
				//如果是文件 则让文件个数+1
				$filenum ++;

			}
		}
	}
	closedir($dir);//关闭is_dir($newPath)就完成一次,然后又判断
 }

 total($path,$dirnum,$filenum);   //调用此函数echo才有结果  
 echo '目录个数为:'.$dirnum.'<br/>';
 echo "文件个数为:".$filenum.'<br/>';

@删除目录

header(‘Content-type:text/html;charset=utf-8’);
//删除 rmdir 只能删除一个空目录
$path = ‘./wanghui_demo’;

delDir($path);

function delDir($path){
//打开目录
d i r = o p e n d i r ( dir = opendir( dir=opendir(path);

//读取目录
while($filename = readdir($dir)){
	//过滤.和..
	if($filename != '.' && $filename != '..'){
		//拼接路径
		$newPath = $path.'/'.$filename;
		//判断是否是目录
		if(is_dir($newPath)){

			delDir($newPath);

		}else{
			unlink($newPath);
			echo '删除文件'.$newPath.'成功<br>';
		}
	}
}
//关闭目录
closedir($dir);
//删除空目录
rmdir($path);
echo '删除目录'.$path.'成功<br>';

}

@遍历目录

	header('Content-type:text/html;charset=utf-8');


	myDir('./demo');

	function myDir($path){
		//打开目录
		$dir = opendir($path);
		//读取目录
		while($filename = readdir($dir)){
			//过滤.和..
			if($filename != '.' && $filename != '..'){
				//拼接路径
				$newPath = $path.'/'.$filename;
				//判断是否是目录
				if(is_dir($newPath)){
					echo '<font size = "5" color = "green">目录为:</font>'.$newPath.'<br>';
					myDir($newPath);
				}else{
					echo '<font size = "2" color = "blue">文件为</font>'.$newPath.'-------文件大小为:'.filesize($newPath).'<br>';
				}
			}
		}
		echo "<hr>";
		closedir ($dir);
	}

@移动和重命名目录

header('Content-type:text/html;charset=utf-8');  

//移动和重命名目录
renameDir('./demo','./php_dirdemo');

function renameDir($dirsrc,$dirto){
	//判断目标是不是目录
	if(is_file($dirto)){
		echo '目标不是目录创建失败';
		return;
	}
	//判断目标目录是否存在
	if(!file_exists($dirto)){
		mkdir($dirto);
		echo '创建目标目录'.$dirto.'成功<br>';
	}
	//打开目录
	$dir = opendir($dirsrc);
	//读取目录
	while($filename = readdir($dir)){
		//过滤.和..
		if($filename != '.' && $filename != '..'){
			//拼接源路径
			$path1 = $dirsrc.'/'.$filename;
			//拼接新路径
			$path2 = $dirto.'/'.$filename;
			//判断源路径是目录还是文件
			 if(is_dir($path1)){
			 	renameDir($path1,$path2);
			 }else{
			 	rename($path1,$path2);
			 	echo '移动文件'.$path1.'成功<br>';
			 }

		}
	}
	closedir($dir);
	rmdir($dirsrc);
}

@统计目录大小

	header('Content-type:text/html;charset=utf-8');
	//统计目录的大小;
	//注意:目录本身没有大小,目录的大小是目录里面文件大小的累加和


	$size= dirSize('./dirdemo');
	$size = tosize($size);
	var_dump($size); 
	//把文件函数转换嵌套进去

	function dirSize($dirname){
		//定义一个目录的大小
		$dirsize = 0;
		//打开目录
		$dir = opendir($dirname);
		//读取目录
		while($filename = readdir($dir)){
			//过滤.和..
			if($filename != '.' && $filename != '..'){
				//拼接路径
				$newPath = $dirname.'/'.$filename;
				//判断是文件还是目录
				if(is_dir($newPath)){
					 $dirsize += dirSize($newPath); 
					 //因为dirSize($newPath)会返回一个值,要用$dirsize加上这个值,这个值是else里面的值

				}else{
					$dirsize += filesize($newPath);
				}
			}
		}
		//关闭目录
		closedir($dir);
		return $dirsize; //一定要在末尾加上return $dirsize不然就会返回NULL
	}


      //1024 byte = 1kb
	  //1024 kb = 1mb
	  //1024 mb = 1gb
	  //文件大小转换函数

	   function tosize($size){
	   	if($size > pow(1024, 3)){
	   		$dw = 'GB';
	   		$size = round($size/pow(1024, 3),2);
	   	}elseif ($size > pow(1024, 2)) {
	   		$dw = 'MB';
	   		$size = round($size/pow(1024, 2),2);   		
	   	}elseif($size > 1024){
	   		$dw = 'KB';
	   		$size = round($size/1024,2); 
	   	}else{
	   		$dw = 'byte';
	   	}
	   	return $size.$dw;
	   }

@复制目录

header('Content-type:text/html;charset=utf-8');


myCopy ('./dirdemo','./dirdemo_copy');
function myCopy($dirsrc,$dirto){
	//判断目标是否是目录
	if(is_file($dirto)){
		echo '复制目标不是目录复制失败';
		return;
	}
	//判断目标目录是否存在
	if(!file_exists($dirto)){
		mkdir($dirto);
		echo '创建目录'.$dirto.'成功<br>';
	}
	//打开目录
	$dir = opendir($dirsrc); 
	//读取目录
	while($filename = readdir($dir)){
		//过滤.和..
		if($filename != '.' && $filename != '..'){
			//拼接源路径
			$file1 = $dirsrc.'/'.$filename;
			//拼接目标路径
			$file2 = $dirto.'/'.$filename;
			//判断当前文件是否是目录
			if(is_dir($file1)){
				//调用自己
				myCopy($file1,$file2);
			}else{
				//是文件
				echo '复制文件'.$file2.'成功<br>';
				copy($file1,$file2);
			}
		}
	}
	//关闭目录
	closedir($dir);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值