php常用的文件操作函数

1、删除目录下所有的文件和文件夹,采用了递归的方式循环去删除

/**
    *  删除目录下所有的文件和文件夹
    * $dirname 表示的目录的路径
    * return 的当前的要删除的目录的路径,空目录
*/
function rmdirr($dirname) {
	if (! file_exists ( $dirname )) {
		return false;
	}
	if (is_file ( $dirname ) || is_link ( $dirname )) {
		return unlink ( $dirname );
	}
	 $dir = dir ( $dirname );
	while ( false !== $entry = $dir->read () ) {
	  if ($entry == '.' || $entry == '..') {
				continue;
		   }
		 $this->rmdirr ( $dirname . DIRECTORY_SEPARATOR . $entry );
		}
		
	$dir->close ();
	return rmdir ( $dirname );
}

2、计算文件的大小

/**
 * 计算文件的大小,
 * @param int $size 文件的大小,返回的大小有k,kb m
 */
function Byte_Change($size) {
	if ($size <= 1024) {
		$num = floor ( $size * 100 ) / 100;
		$ext = "K";
	} elseif ($size <= 1048576 and $size > 1024) {
		$num = floor ( ($size / 1024) * 100 ) / 100;
		$ext = "KB";
	} elseif ($size > 1048576) { //$size<=1073741824 and 
		$num = floor ( ($size / 1048576) * 100 ) / 100;
		$ext = "MB";
	}
	return $num . " " . $ext;

}

3、先删除目录下所有的文件,这个不删除文件夹

/**
	*先删除目录下所有的文件
	* 返回的是true ,错误返回false
*/
function deldir($dir) {
$dh = opendir ( $dir );
while ( $file = readdir ( $dh ) ) {
  if ($file != "." && $file != "..") {
		$fullpath = $dir . "/" . $file;
		if (! is_dir ( $fullpath )) {
				unlink ( $fullpath );
			} else {
				deldir ( $fullpath );
			 }
		}
	}
closedir ( $dh ); //删除当前文件夹:
if (rmdir ( $dir )) {
		return true;
} else {
		return false;
	}
}

4、计算目录的大小或者文件夹的大小

/**
  * 返回目录的大小,及文件夹的大小
  * $dir 目录的路径
  * return 目录的文件夹的大小
*/
function dir_size($dir) {  
 if (!preg_match('#/$#', $dir)) {  
      $dir .= '/';  
  }  
  $totalsize = 0;    //调用文件列表  
   foreach (get_file_list($dir) as $name) {  
	  $totalsize += (@is_dir($dir.$name) ? dir_size("$dir$name/") :   (int)@filesize($dir.$name));  
	}  
    return $totalsize; 
}

5、获取文件夹下的文件和文件夹列表(列出所有的文件)

/**
    * 获取文件夹下的列表 
	*  $path 目录的路径
	* return 返回文件夹下所有文件和文件夹名组成的数组
*/
function get_file_list($path) {  
    $f = $d = array();   //获取所有文件  
    foreach (get_all_files($path) as $name) {  
        if (@is_dir($path.$name)) {  
             $d[] = $name;  
        } else if (@is_file($path.$name)) {  
             $f[] = $name;  
         }  
    }  
     natcasesort($d);  
     natcasesort($f);  
    return array_merge($d, $f);  
 }

6、 获取文件夹下的所有的文件

/**
    * 获取文件夹下的列表 
	* $path 目录的路径
	* return 返回文件夹下所有文件名组成的数组
*/  
 function get_all_files($path) {  
     $list = array();  
    if (($hndl = @opendir($path)) === false) {  
         return $list;  
     }  
    while (($file=readdir($hndl)) !== false) {  
         if ($file != '.' && $file != '..') {  
             $list[] = $file;  
        }  
     }  
    closedir($hndl);  
    return $list;  
}

8、创建一个文件的方法

/**
   * 创建一个文件的方法
   * $filename 文件的路径,必须加上文件名,比如:/media/example.txt
   * $message 写入文件的内容
   * $mode 写入的模式 a a+ w w+ 等等
   * 写入成功后返回true ,失败返回false
*/
function crateFile($filename,$message,$mode="w+")
{
	if(!file_exists($filename)){
		die("文件" .$filename. " 不存在");
	}
    $fp=fopen($filename, $mode); //打开文件指针,创建文件
	if ( !is_writable($filename) ){
		  die("文件:" .$filename. "不可写,请检查!");
	}
	$result=fwrite($fp, $message);
	fclose($fp);  //关闭指针
    if($result){ 
		return true; 
	}else {
	 return false; 
	}
}

9、删除某个目录下的某个文件名

/**
* 本方法删除path路径下name文件
*
* @param string_type path
* @param string_type name
*/
function del_file($path,$name){ //删除文件
	$filename=$path.$name;
	
	if (!file_exists($filename)) {
		die("文件不存在,请确认路径是否正确");
	}
	else {
		if (unlink($filename)){
		return true;
	}
		return false;
	}

}

10、本方法用来复制name文件从spath到dpath

/**
* 本方法用来复制name文件从spath到dpath
*
* @param string name 文件名
* @param string spath 原目标路径
* @param string dpath 目的路径
*/
function copy_file($name,$spath,$dpath) //文件复制
{
	$filename=$spath.$name;
	if (file_exists($filename)) {
		$handle=fopen($filename,'a');
		copy($filename,$dpath.$name);
		if (file_exists($dpath.$name))
		return true;
		else return false;
	}
	else 
	die("文件不存在");
}

11、本方法把name文件从spath移动到path路径

/**
* 本方法把name文件从spath移动到path路径
*
* @param string_type path
* @param string_type dirname
* @param string_type dpath
*/
function move_file($name,$spath,$dpath) //移动文件
{
	$filename=$spath.$name;
	if (file_exists($filename)) {
		$result=rename($filename,$dpath.$name);
		if ($result==false or !file_exists($dpath))
		   die("文件移动失败或目的目录不存在");
		else 
		   return true;
		}
		else {
		return false;
	}
}

12、本方法把filename文件重命名为newname文件 

 /**  本方法把filename文件重命名为newname文件 *
  * @param string_type filename url的路径
  * @param string_type newname 
  */
 function rename_file($filename,$newname) 
 { 
	 if (file_exists($filename)) {//判断文件是否存在   
		$result=rename($filename,$newfilename);  
		if ($result==true)      
				  return true;    
		 else         
				  return false;
	 }   else 
	    
	  die( "文件不存在"); 
  }

13、本方法在path目录下创建名为dirname的目录 

  /** 
  * 本方法在path目录下创建名为dirname的目录 *
  * @param string_type path 
  * @param string_type dirname
  */
   function create_dir($path,$dirname){     //创建目录 
    if (file_exists($path)) {   
	     $result=@mkdir($path.$dirname);  
		  if ($result)      
		    return true; 
		   else      
		    return false;
	}  else     
	 die("路径不存在,请重新输入"); 
  }

本文永久地址:http://www.huanghaiping.com/article/12.html
本文出自 黄海平博客 ,转载时请注明出处及相应链接。

发表我的评论
  

网友最新评论 (0)

暂无评论
返回顶部