封装目录相关操作

原创 2019-02-16 20:08:51 361
摘要:<?php /** *创建目录方法和删除目录方法 *$dirname  //需要创建的目录名称 */ function create_folder($dirName) { //判断是否存在相同或目录 if(file_exists($dirName)){ return '存在同名文件夹'; } //创建目录并判断,mkdir(
<?php
/**
*创建目录方法和删除目录方法
*$dirname  //需要创建的目录名称
*/
function create_folder($dirName)
{
	//判断是否存在相同或目录
	if(file_exists($dirName)){
		return '存在同名文件夹';
	}
	//创建目录并判断,mkdir()中true可以嵌套进行创建目录
	if(mkdir($dirName,0777,true)){
		return '目录创建成功';
	}
	return '目录创建失败';
}
//echo create_folder('admin/css');
//echo create_folder('css');

/**
*删除目录操作
*$path 需要删除的目录
*/
function del_folder($path)
{
	//打开目录
	$dir = opendir($path);
	//循环读取目录中的内容
	while($item = readdir($dir)){
		//判断.和..特殊文件或目录
		if($item != '.'&& $item != '..'){
			//判断是否为真正的文件
			if(is_file($path.'/'.$item)){
				//删除文件
				unlink($path.'/'.$item);
			}
			//判断是否为目录
			if(is_dir($path.'/'.$item)){
				//回调方法
				$func = __FUNCTION__;
				//使用方法
				$func($path.'/'.$item);
			}
		}
	}
	//关闭目录
	closedir($dir);
	//删除目录
	rmdir($path);
	return '目录删除成功!';
}
//echo del_folder('file');

//复制文件及文件夹
/**
*$src    原目录
*$dest   目标目录
*return  提示信息
*/
function copy_dir($src,$dest)
{
	//判断复制的目录下是否有相同的文件或目录
	if(!file_exists($dest)){
		mkdir($dest,0777,true);
	}else{
		return '该目录下存在相同文件';
	}
	//打开目录
	$dir = opendir($src);
	//循环读取目录中的内容
	//readdir()读取目录中的文件或目录等
	while($item = readdir($dir)){
		//判断.和..的文件及目录
		if($item != '.' && $item != '..'){
			//判断是否为文件
			if(is_file($src.'/'.$item)){
				copy($src.'/'.$item,$dest.'/'.$item);
			}
			//判断是否为目录
			if(is_dir($src.'/'.$item)){
				//回调方法
				$func = __FUNCTION__;
				//使用方法
				$func($src.'/'.$item,$dest.'/'.$item);
			}
		}
	}
	//关闭目录
	closedir($dir);
	return '目录复制成功';
}

//echo copy_dir('upload','css/upload');

//目录重命名操作
/**
*$oldname  源目录名称
*$newname  新目录名称
*/
function rename_dir($oldname,$newname)
{
	if(!file_exists($newname)){
		if(rename($oldname,$newname)){
			return '修改成功';
		}else{
			return '修改失败';
		}
	}
	return '已存在该文件或目录';
}
//echo rename_dir('css','js');

//剪切目录操作和目录读取操作
/**
*$src  源目录
*$dest  目标目录
*return 提示信息
*/
function cut_dir($src,$dest)
{
	//判断是否存在目标目录
	if(is_dir($dest)){
		//拼接目标路劲
		$dest =$dest.'/'.$src;
		//判断目标目录是否存在相同目录
		if(!file_exists($dest)){
			//判断并剪切目录
			if(rename($src,$dest)){
				return "目录剪切成功";
			}else{
				return '目录剪切失败';
			}
		}else{
			return '该目录下已存在此文件';
		}
	}else{
		return '目标不是目录';
	}
}

//echo cut_dir('admin','js');


//读取目录操作
/**
*$path 读取的目录
*return 数据
*/
function read_dir($path)
{
	$arr = [];
	$dir = opendir($path);
	while($item = readdir($dir)){
		if($item !='.'&& $item != '..'){
			if(is_file($path.'/'.$item)){
				$arr['file'][]=$item;
			}
			if(is_dir($path.'/'.$item)){
				$arr['dir'][]=$item;
			}
		}
	}
	closedir($dir);
	return $arr;
}

//var_dump(read_dir('js'));
//目录大小的查询操作
//$path 查询目录的小名称
function dir_size($path)
{
	$sum=0;
	global $sum;
	$dir = opendir($path);
	while ($item=readdir($dir)){
		if($item != '.' && $item !='..'){
			if(is_file($path.'/'.$item)){
				$sum += filesize($path.'/'.$item);
			}
			if(is_dir($path.'/'.$item)){
				//__FUNCTION__回调  获取当前的方法名
				$func = __FUNCTION__;
				$func($path.'/'.$item);
			}
		}
	}
	return $sum;
}
//字节的大小
//echo dir_size('js');
//调用方法trans_byte()显示通常的大小
echo trans_byte(dir_size('js'));


批改老师:西门大官人批改时间:2019-02-17 09:12:04
老师总结:作业写的很好,不过删除目录的操作嵌套有点深了,可读性不太好

发布手记

热门词条