首页 > 编程 > PHP > 正文

PHP常用的文件操作函数

2019-11-11 04:53:29
字体:
来源:转载
供稿:网友

php常用的文件操作函数  一 、解析路径:1 获得文件名:basename();2 得到目录部分:dirname();3 得到路径关联数组:pathinfo();二、文件类型:1. filetype();三、得到给定文件有用信息数组(很有用)1. fstat();通过已打开的文件指针取得文件信息2. stat()获取由 filename 指定的文件的统计信息(类比fstat())四、计算大小1. filesize()2. disk_free_space()获得目录所在磁盘分区的可用空间(字节单位)3. disk_total_space()返回一个目录的磁盘总大小五、 访问与修改时间1. fileatime(): 最后访问时间2. filectime(): 最后改变时间(任何数据的修改)3. filemtime(): 最后修改时间(指仅是内容修改)六、 文件的I/O操作1. fopen -- 打开文件或者 URL2. file -- 把整个文件读入一个数组中(此函数是很有用的)3. fgets -- 从文件指针中读取一行4. fgetss -- 从文件指针中读取一行并过滤掉 HTML 标记(和 fgets() 相同,只除了 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记)。七、对目录的操作:1. opendir -- 打开目录句柄,打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。2. readdir -- 从目录句柄中读取条目,返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。3. scandir -- 列出指定路径中的文件和目录(很有用),返回一个 array,包含有 directory 中的文件和目录。八、 对文件属性的操作(操作系统环境不同,可能有所不一样,这点要注意)1、文件是否可读:boolis_readable ( string filename )2、文件是否可写:bool is_writable ( string filename )3、检查文件是否存在 boolfile_exists ( string filename )九、可直接使用在项目中的超强PHP文件操作类,

<?php  

/***************************************************************************************文件名:File.cls.php 文件简介:类clsFile的定义,对文件操作的封装 ****************************************************************************************/  !defined('INIT_PHPV') && die('No direct script access allowed');  class clsFile  {     PRivate $fileName_str;         //文件的路径     private $fileOpenMethod_str;   //文件打开模式          function __construct($fileName_str='',$fileOpenMethod_str='readOnly')//路径,默认为空;模式,默认均为只读     {         //构造函数,完成数据成员的初始化         $this->fileName_str=$fileName_str;         $this->fileOpenMethod_str=$fileOpenMethod_str;     }          function __destruct()     {         //析构函数     }          public function __get($valName_val)//欲取得的数据成员名称     {         //特殊函数,取得指定名称数据成员的值            return $this->$valName_val;     }          private function on_error($errMsg_str='Unkown Error!',$errNo_int=0)//错误信息,错误代码     {          echo '程序错误:'.$errMsg_str.'错误代码:'.$errNo_int;//出错处理函数     }          public function open()     {         //打开相应文件,返回文件资源标识            //根据fileOpenMethod_str选择打开方式            switch($this->fileOpenMethod_str)            {                   case 'readOnly':                      $openMethod_str='r';      //只读,指针指向文件头                      break;                   case 'readWrite':                      $openMethod_str='r+';     //读写,指针指向文件头                      break;                   case 'writeAndInit':                      $openMethod_str='w';      //只写,指针指向文件头将大小截为零,不存在则创建                      break;                   case 'readWriteAndInit':                      $openMethod_str='r+';     //读写,指针指向文件头将大小截为零,不存在则创建                      break;                   case 'writeAndAdd':                      $openMethod_str='a';      //只写,指针指向文件末尾,不存在则创建                      break;                   case 'readWriteAndAdd':                      $openMethod_str='a+';     //读写,指针指向文件末尾,不存在则创建                      break;                   default:                      $this->on_error('Open method error!',310);//出错处理                      exit;            }                        //打开文件                   if(!$fp_res=fopen($this->fileName_str,$openMethod_str))            {                   $this->on_error('Can/'t open the file!',301);//出错处理                   exit;            }                        return $fp_res;     }          public function close($fp_res)//由open返回的资源标识     {         //关闭所打开的文件            if(!fclose($fp_res))            {                   $this->on_error('Can/'t close the file!',302);//出错处理                   exit;            }     }          public function write()//$fp_res,$data_str,$length_int:文件资源标识,写入的字符串,长度控制     {         //将字符串string_str写入文件fp_res,可控制写入的长度length_int            //判断参数数量,调用相关函数            $argNum_int=func_num_args();//参数个数                        $fp_res=func_get_arg(0);          //文件资源标识            $data_str=func_get_arg(1);        //写入的字符串                        if($argNum_int==3)            {                   $length_int=func_get_arg(2);  //长度控制                if(!fwrite($fp_res,$data_str,$length_int))                {                      $this->on_error('Can/'t write the file!',303);//出错处理                      exit;                }            }            else            {                   if(!fwrite($fp_res,$data_str))                {                      $this->on_error('Can/'t write the file!',303);//出错处理                      exit;                }            }     }          public function read_line()//$fp_res,$length_int:文件资源标识,读入长度     {         //从文件fp_res中读入一行字符串,可控制长度            //判断参数数量            $argNum_int=func_num_args();            $fp_res=func_get_arg(0);                        if($argNum_int==2)            {                $length_int=func_get_arg(1);                if($string_str=!fgets($fp_res,$length_int))                {                      $this->on_error('Can/'t read the file!',304);//出错处理                      exit;                }                return $string_str;         }         else         {                if(!$string_str=fgets($fp_res))                {                      $this->on_error('Can/'t read the file!',304);//出错处理                      exit;                }                return $string_str;            }     }          public function read($fp_res,$length_int)//文件资源标识,长度控制     {         //读入文件fp_res,最长为length_int            if(!$string_str=fread($fp_res,$length_int))            {                   $this->on_error('Can/'t read the file!',305);//出错处理                   exit;            }            return $string_str;     }          public function is_exists($fileName_str)//文件名     {         //检查文件$fileName_str是否存在,存在则返回true,不存在返回false            return file_exists($fileName_str);     }    /******************取得文件大小*********************/  /* 取得文件fileName_str的大小 $fileName_str 是文件的路径和名称 返回文件大小的值 */     public function get_file_size($fileName_str)//文件名     {         return filesize($fileName_str);     }    /******************转换文件大小的表示方法*********************/  /* $fileSize_int文件的大小,单位是字节 返回转换后带计量单位的文件大小 */     public function change_size_express($fileSize_int)//文件名     {         if($fileSize_int>1024)         {            $fileSizeNew_int=$fileSize_int/1024;//转换为K            $unit_str='KB';              if($fileSizeNew_int>1024)               {                $fileSizeNew_int=$fileSizeNew_int/1024;//转换为M                $unit_str='MB';               }            $fileSizeNew_arr=explode('.',$fileSizeNew_int);            $fileSizeNew_str=$fileSizeNew_arr[0].'.'.substr($fileSizeNew_arr[1],0,2).$unit_str;         }         return $fileSizeNew_str;     }  /******************重命名文件*********************/  /* 将oldname_str指定的文件重命名为newname_str $oldName_str是文件的原名称 $newName_str是文件的新名称 返回错误信息 */      public function rename_file($oldName_str,$newName_str)     {            if(!rename($oldName_str,$newName_str))            {                   $this->on_error('Can/'t rename file!',308);                   exit;            }     }    /******************删除文件*********************/  /* 将filename_str指定的文件删除 $fileName_str要删除文件的路径和名称 返回错误信息 */     public function delete_file($fileName_str)//     {            if(!unlink($fileName_str))            {                   $this->on_error('Can/'t delete file!',309);//出错处理                   exit;            }     }    /******************取文件的扩展名*********************/  /* 取filename_str指定的文件的扩展名 $fileName_str要取类型的文件路径和名称 返回文件的扩展名 */     public function get_file_type($fileName_str)     {            $fileNamePart_arr=explode('.',$fileName_str);            while(list(,$fileType_str)=each($fileNamePart_arr))            {             $type_str=$fileType_str;            }             return $type_str;     }    /******************判断文件是否是规定的文件类型*********************/  /* $fileType_str规定的文件类型 $fileName_str要取类型的文件路径和名称 返回false或true */     public function is_the_type($fileName_str,$fileType_arr)     {         $cheakFileType_str=$this->get_file_type($fileName_str);         if(!in_array($cheakFileType_str,$fileType_arr))         {          return false;            }         else         {            return true;         }     }    /******************上传文件,并返回上传后的文件信息*********************/  /* $fileName_str本地文件名 $filePath上传文件的路径,如果$filePath是str则上传到同一目录用一个文件命名,新文件名在其加-1,2,3..,如果是arr则顺序命名 $allowType_arr允许上传的文件类型,留空不限制 $maxSize_int允许文件的最大值,留空不限制 返回的是新文件信息的二维数组:$reFileInfo_arr */     public function upload_file($fileName_str,$filePath,$allowType_arr='',$maxSize_int='')  {               $fileName_arr=$_FILES[$fileName_str]['name'];  //文件的名称         $fileTempName_arr=$_FILES[$fileName_str]['tmp_name'];  //文件的缓存文件         $fileSize_arr=$_FILES[$fileName_str]['size'];//取得文件大小         $reFileInfo_arr=array();         $num=count($fileName_arr)-1;         for($i=0;$i<=$num;$i++)        {             if($fileName_arr[$i]!='')           {            if($allowType_arr!='' and !$this->is_the_type($fileName_arr[$i],$allowType_arr))//判断是否是允许的文件类型            {             $this->on_error('The file is not allowed type!',310);//出错处理             break;            }              if($maxSize_int!='' and $fileSize_arr[$i]>$maxSize_int)            {             $this->on_error('The file is too big!',311);//出错处理             break;            }                $j=$i+1;            $fileType_str=$this->get_file_type($fileName_arr[$i]);//取得文件类型            if(!is_array($filePath))            {            $fileNewName_str=$filePath.'-'.($j).'.'.$fileType_str;            }            else            {            $fileNewName_str=$filePath_arr[$i].'.'.$fileType_str;            }            copy($fileTempName_arr[$i],$fileNewName_str);//上传文件            unlink($fileTempName_arr[$i]);//删除缓存文件              //---------------存储文件信息--------------------//            $doFile_arr=explode('/',$fileNewName_str);            $doFile_num_int=count($doFile_arr)-1;            $reFileInfo_arr[$j]['name']=$doFile_arr[$doFile_num_int];            $reFileInfo_arr[$j]['type']=$fileType_str;            $reFileInfo_arr[$j]['size']=$this->change_size_express($fileSize_arr[$i]);        }     }     return $reFileInfo_arr;  }    /******************备份文件夹*********************/  }    ?> 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表