工作中经常用php操作文件,因此把常用文件操作整理出来:
1 class hylaz_file{ 2 /** 3 * Read file 4 * @param string $pathname 5 * @return string content 6 */ 7 public static function read_file($pathname){ 8 return @file_get_contents($pathname); 9 }10 /**11 * Write File12 * @param string $pathname 文件名称13 * @param string $data 写入到文件的数据14 * @param string $md 打开文件模式15 * @return int bool16 */17 public static function write_file($pathname,$data,$md='wb'){18 if(!$fp=fopen($pathname,$mode))19 return false;20 flock($fp,LOCK_EX);21 for($result=$written=0,$length=strlen($data),$written<$length;$written+=$result){22 if(($result=fwrite($fp,substr($data,$written)))===FALSE){23 break;24 }25 }26 flock($fp, LOCK_UN);27 fclose($fp);28 return is_int($result);29 }30 /**31 * 获取文件信息32 * @param string path of file33 * @param array array or comma separated string of information returned34 * @return array35 */36 public static function file_info($file,$return_value=array('name', 'server_path', 'size', 'date')){37 if(!file_exists($file)){38 return false;39 }40 if(is_string($return_value)){41 $return_value=explode(",",$return_value);42 }43 foreach($return_value as $key){44 switch ($key){45 case "name":46 $fileinfo['name']=basename($path);47 break;48 case "server_path":49 $fileinfo['server_path']=$file;50 break;51 case 'date':52 $fileinfo['date']=filemtime($file);53 break;54 case 'size':55 $fileinfo['size']=filesize($file);56 break;57 case 'readable':58 $fileinfo['readable']=is_readable($file);59 break;60 case 'writable':61 $fileinfo['writable']=is_writable($file);62 break;63 case 'executable':64 $fileinfo['executable']=is_executable($file);65 break;66 case 'fileperms':67 $fileinfo['fileperms']=fileperms($file);68 break;69 70 71 }72 }73 return $fileinfo;74 }75 /**76 * 获得八进制的权限位77 * @param string $perms78 * @return string 79 */80 public static function octal_permissions($perms){81 return substr(sprintf("%o",$perms), -3);82 }83 }