10 php目录文件操作类

<?php
/*
 * 从网上找的目录文件操作类
 * 在最底下写了实例,可以一个一个单独的测试
 */
	class file_dir
	{
		function check_exist($filename)		//检查目录或文件是否存在
		{
			if(file_exists($filename))
			{
				return true;
			}
			else	return false;
		}
 
		function create_dir($dirname,$mode=0777)	// 一次只能创建一级目录
		{
			if(is_null($dirname) || $dirname=="")	return false;
			if(!is_dir($dirname))
			{
				return mkdir($dirname,$mode);
			}
		}
 
		function createDir($aimUrl)		//可同时创建多级目录
		{
        	$aimUrl = str_replace('\\', '/', $aimUrl);
        	$aimDir = '';
        	$arr = explode('/', $aimUrl);
        	foreach ($arr as $str)
        	{
            	$aimDir .= $str . '/';
            	if (!file_exists($aimDir))
            	{
                	mkdir($aimDir);
            	}
        	}
    	}
 
		function delete_dir($dirname)		//删除目录
		{
			if($this->check_exist($dirname) and is_dir($dirname))
			{
				if(!$dirhandle=opendir($dirname)) return false;
				while(($file=readdir($dirhandle))!==false)
				{
					if($file=="." or $file=="..")	continue;
					$file=$dirname.DIRECTORY_SEPARATOR.$file;  //表示$file是$dir的子目录
					if(is_dir($file))
					{
						$this->delete_dir($file);
					}
					else
					{
						unlink($file);
					}
				}
				closedir($dirhandle);
				return rmdir($dirname);
			}
			else	return false;
		}
 
		function copy_dir($dirfrom,$dirto)		//复制目录
		{
			if(!is_dir($dirfrom))	return false;
			if(!is_dir($dirto))		mkdir($dirto);
			$dirhandle=opendir($dirfrom);
			if($dirhandle)
			{
				while(false!==($file=readdir($dirhandle)))
				{
					if($file=="." or $file=="..")	continue;
					$filefrom=$dirfrom.DIRECTORY_SEPARATOR.$file;  //表示$file是$dir的子目录
					$fileto=$dirto.DIRECTORY_SEPARATOR.$file;
					if(is_dir($filefrom))
					{
						$this->copy_dir($filefrom,$fileto);
					}
					else
					{	if(!file_exists($fileto))
						copy($filefrom,$fileto);
					}
				}
			}
			closedir($dirhandle);
		}
 
		function getdir_size($dirname)		//获取目录大小
		{
			if(!file_exists($dirname) or !is_dir($dirname))	 return false;
			if(!$handle=opendir($dirname)) 	return false;
			$size=0;
			while(false!==($file=readdir($handle)))
			{
				if($file=="." or $file=="..")	continue;
				$file=$dirname."/".$file;
				if(is_dir($file))
				{
					$size+=$this->getdir_size($file);
				}
				else
				{
					$size+=filesize($file);
				}
 
			}
			closedir($handle);
			return $size;
		}
 
		function getReal_size($size)	   // 单位自动转换函数
		{
			$kb=1024;
			$mb=$kb*1024;
			$gb=$mb*1024;
			$tb=$gb*1024;
			if($size<$kb)	return $size."B";
			if($size>=$kb and $size<$mb)	return round($size/$kb,2)."KB";
			if($size>=$mb and $size<$gb)	return round($size/$mb,2)."MB";
			if($size>=$gb and $size<$tb)	return round($size/$gb,2)."GB";
			if($size>=$tb)	return round($size/$tb,2)."TB";
		}
 
		function copy_file($srcfile,$dstfile)
		{
			if(is_file($srcfile))
			{
				if(!file_exists($dstfile))
				return copy($srcfile,$dstfile);
			}
			else	return false;
		}
 
   	 	function unlink_file($filename)		//删除文件
   	 	{
   	 		if($this->check_exist($filename) and is_file($filename))
   	 		{
   	 			return unlink($filename);
   	 		}
   	 		else	return false;
   	 	}
 
   	 	function getsuffix($filename)			//获取文件名后缀
   	 	{
   	 		if(file_exists($filename) and is_file($filename))
   	 		{
   	 			return end(explode(".",$filename));
   	 		}
   	 	}
 
   	 	function input_content($filename,$str)		//将字符串写入文件
   	 	{
   	 		if(function_exists('file_put_contents'))
   	 		{
   	 			file_put_contents($filename,$str);
   	 		}
   	 		else
   	 		{
   	 			$fp=fopen($filename,"wb");
   	 			fwrite($fp,$str);
   	 			fclose($fp);
   	 		}
   	 	}
 
   	 	function output_content($filename)			//将整个文件内容读出到一个字符串中
   	 	{
   	 		if(function_exists('file_get_contents'))
   	 		{
   	 			return file_get_contents($filename);
   	 		}
   	 		else
   	 		{
   	 			$fp=fopen($filename,"rb");
   	 			$str=fread($fp,filesize($filename));
   	 			fclose($fp);
   	 			return $str;
   	 		}
   	 	}
 
   	 	function output_to_array($filename)		//将文件内容读出到一个数组中
   	 	{
   	 		$file=file($filename);
   	 		$arr=array();
   	 		foreach($file as $value)
   	 		{
   	 			$arr[]=trim($value);
   	 		}
   	 		return $arr;
   	 	}
 
 
	}
$dir=new file_dir;
 
$para	=	'<br />----------------------------------------------------------------------<br />';
 
echo $dir->check_exist("D:/wamp/www/test2/");echo $para;
echo $dir->create_dir("D:/wamp/www/test2/");echo $para;
echo $dir->createDir("D:/wamp/www/test2/test/");echo $para;
echo $dir->delete_dir("D:/wamp/www/test2/test/");echo $para;
echo $dir->copy_dir("D:/wamp/www/test/","D:/wamp/www/test3/");echo $para;
echo $size	=	$dir->getdir_size("D:/wamp/www/test3/");echo $para;
echo $dir->getReal_size($size);echo $para;
 
echo $dir->copy_file("D:/wamp/www/test3/fenlei.php","D:/wamp/www/test3/fenlei2.php");echo $para;
echo $dir->unlink_file("D:/wamp/www/test3/fenlei.php");echo $para;
echo $dir->getsuffix("D:/wamp/www/test3/fenlei2.php");echo $para;
echo $dir->input_content("D:/wamp/www/test3/fenlei5.php",'test');echo $para;
echo $dir->output_content("D:/wamp/www/test3/fenlei3.php");echo $para;
$outPut	=	$dir->output_to_array("D:/wamp/www/test3/fenlei3.php");echo $para;
print_r($outPut);
?>

列出所有的目录和文件(使用了递归readdir等函数)

function file_list($path)
{
	if ($handle = opendir($path)) 
	{
		while (false !== ($file = readdir($handle))) 
		{
			if ($file != "." && $file != "..") 
			{
				if (is_dir($path."/".$file)) 
				{
					echo $path.": ".$file."<br>";
					file_list($path."/".$file);
				} 
				else 
				{
					echo $path.": ".$file."<br>";
				}
			}
		}
	}
}
file_list('D:/wamp/www');

Related posts:

Leave a Reply

Your email address will not be published.