PHP常用的文件操作类

<?php
     class qyFile {
     
         //构造函数
         public function __construct() {
             return true;
         }
         
         
         //建立文件夹 uploads/20121029/pictrue
         public function mkDir($aimUrl) {
             //去除多余的/
             $aimUrl = str_replace("\\", '/', $aimUrl);
             
             $aimDir = "";
             
             $array  = explode("/", $aimUrl);
             
             
             foreach($array as $v) {
                 if($v != "") {
                     $aimDir .= $v.'/';
                     
                     if(!$this->isExists($aimDir)){
                          mkdir($aimDir);
                     }
                 }
             }
         }
         
         
         //建立文件uploads/20121029/pictrue/1.php
         public function touch($aimUrl, $overWrite = false) {
             if($this->isExists($aimUrl)  && $overWrite == false) {
                   return false;
             }elseif($this->isExists($aimUrl) && $overWrite == true) {
                              
             }
             
             //获取目录
             $dir = dirname($aimUrl);
             
             if(!$this->isExists($dir)) {
                 $this->mkDir($dir);
             }
             
             //创建文件
             touch($aimUrl);
             
             return true;
         }
         
         //移动文件或文件夹
         public function mv($filePath, $aimPath, $overWrite = false) {
              if($this->isdir($filePath)) {
                  $this->mvDir($filePath, $aimPath, $overWrite);
              }else{
                  $this->mvFile($filePath, $aimPath, $overWrite);
              }
         
         }
         
         
         //复制文件或文件夹
         public function cp($filePath, $aimPath, $overWrite = false) {
              if($this->isDir($filePath)) {
                   $this->cpDir($filePath, $aimPath, $overWrite);
              }else{
                   $this->cpFile($filePath, $aimPath, $overWrite);
              }
         }
         
         
         //删除文件或文件夹
         public function rm($filePath) {
              if($this->isDir($filePath)) {
                 $this->rmDir($filePath);
              }else{
                 $this->rmFile($filePath);
              }
         }
         
         
         //统计文件或文件夹的大小
         public function size($file) {
             if($this->isDir($file)) {
               return $this->SizeCount($this->dirSize($file));
             }else{
               return $this->SizeCount($this->Fsize($file));
             }
         } 
         
         //统计目录大小
         private function dirSize($dirname) {
              //判断目录是否存在
              if(!$this->isExists($dirname) || !is_dir($dirname)) {
                    return false;
              }
              
              //打开目录
              $dirHandle = @opendir($dirname);
              
              if(!$dirHandle) {
                  return false;
              }
              
              $dirSize = 0;
              
              while($file = readdir($dirHandle)) {
                     if($file == "."  || $file == "..") {
                            continue;
                     }
                     
                     $path = $dirname.DIRECTORY_SEPARATOR.$file;
                     
                     if(is_dir($path)) {
                         $dirSize += $this->dirSize($path);
                     }else {
                         $dirSize += $this->Fsize($path);
                     }
              }
              
              closedir($dirHandle);
              
              return $dirSize;
         }
         
         
         //统计文件大小
         private function Fsize($file) {
             //判断是否存在,并且是文件
             if(!$this->isExists($file) || !is_file($file)){
                 return false;
             }
             
             return filesize($file);
             
         }
         
         
         //文件大小单位的计算
         private function SizeCount($fileSize) {
             $suffix = "";
             
             if($fileSize > pow(2,40)) {
                 $return = round($fileSize/pow(2,40), 2);
                 
                 $suffix = "TB";
             }else if($fileSize > pow(2,30)) {
                 $return = round($fileSize/pow(2,30), 2);
                 
                 $suffix = "GB";
             }else if($fileSize > pow(2,20)) {
                 $return = round($fileSize/pow(2,20), 2);
                 
                 $suffix = "MB";
             }else if($fileSize > pow(2,10)) {
                 $return = round($fileSize/pow(2,10), 2);
                 
                 $suffix = "KB";
             }else{
                 $return = $fileSize; 
             
                 $suffix = "bytes";
             }
             
             return $return.$suffix;
         }
         
         
         //将数据写入文件或追加到文件末尾
         public function write($file, $content, $append = false) {
             if(!$this->isExists(dirname($file))) {
                 $this->mkDir(dirname($file));
             }
             
             $type = $append ? "ab" : "wb";
             
             if(!$fp = @fopen($file,$type)) {
                 return false;
             }
             
             @flock($fp, LOCK_EX);
             
             $ok = @fwrite($fp,$content);
             
             @flock($fp, LOCK_UN);
             
             @fclose($fp);
             
             return $ok;
         }
         
         
         //读取一行
         public function readLine($file, $size = 4096){
             static $fileArr = array();

             if(!$fileArr[$file]) {
                 $fileArr[$file] = @fopen($file, 'rb');
             }             
             
             $fp = $fileArr[$file];
             
             if($fp && !feof($fp)) {
                 return fgets($fp, $size);
             }
             
             fclose($fp);
             
             unset($fileArr[$file]);
             
             return false;
         }
         
         
         //读取所有数组
         public function readAll($file) {
            if(!is_file($file)){
                return false;
            }
            
            return file_get_contents($file);
         }
         
         //移动文件夹
         private function mvDir($oldPath, $aimPath, $overWrite = false) {
             $oldPath = str_replace('\\', '/', $oldPath);
             
             $oldPath = rtrim($oldPath, '/').'/';
             
             $aimPath = str_replace('\\', '/', $aimPath);
             
             $aimPath = rtrim($aimPath, '/').'/';
             
             //判断是否是目录
             if(!is_Dir($oldPath)) {
                 return false;
             }    

             //判断目标路径是否存在
             if(!$this->isExists($aimPath)) {
                  $this->mkDir($aimPath);
             }             
             
             //打开目录
             @$dirHandle = opendir($oldPath);
             
             if(!$dirHandle) {
                 return false;
             }
             
             
             //遍历目录
             while($file = readdir($dirHandle)) {
                  if($file == '.' || $file == '..') {
                         continue;
                  }
                  
                  if(!is_dir($oldPath.$file)) {
                       $this->mvFile($oldPath.$file, $aimPath.$file, $overWrite);
                  }else {
                       $this->mvDir($oldPath.$file, $aimPath.$file, $overWrite);
                  }
             }
             
             
             //关闭资源
             closedir($dirHandle);
             
         }
         
         
         //移动文件
         private function mvFile($fileUrl, $aimUrl, $overWrite) {
             //判断文件是否存在
             if(!$this->isExists($fileUrl)) {
                 return false;
             }
             
             if($this->isExists($aimUrl) && $overWrite == false) {
                 return false;
             }elseif($this->isExists($aimUrl) && $overWrite == true){
                 $this->rmFile($aimUrl);
             }
             
             $dir = dirname($aimUrl);
             
             $this->mkDir($dir);
             
             rename($fileUrl, $aimUrl);
             
             return true;
          
         }
         
         
         
         //删除文件夹
         private function rmDir($aimDir) {
             $aimDir = str_replace('\\', '/', $aimDir);
             
             $aimDir = rtrim($aimDir,'/').'/';
             
             //判断是否是目录
             if(!is_dir($aimDir)) {
                 return false;
             }
             
             @$dirHandle = opendir($aimDir);

             while($file = readdir($dirHandle)) {
                 if($file == '.' || $file == '..') {
                       continue;
                 }
                 
                 if(!is_dir($aimDir.$file)) {
                      $this->rmFile($aimDir.$file);
                 }else{
                      $this->rmDir($aimDir.$file);
                 }
             }
             
             closedir($dirHandle);
             
             return  rmdir($aimDir);
             
             
         }
         
         //删除文件
         private function rmFile($aimFile) {
             if($this->isExists($aimFile)) {
                 unlink($aimFile);
                 
                 return true;
             }else{
                 return false;
             }
         }
         
         //判断当前文件是否是一个文件夹
         public  function isDir($path) {
             return @is_dir($path);
         }
         
         //判断文件是否存在
         public function isExists($path) {
             return @file_exists($path);
         }
         
         
         //复制目录
         private function cpDir($oldDir, $aimDir, $overWrite) {
             $oldDir = str_replace('\\', '/', $oldDir);
             
             $oldDir = rtrim($oldDir, '/').'/';
             
             $aimDir = str_replace('\\', '/', $aimDir);
             
             $aimDir = rtrim($aimDir, '/').'/';
             
             if(!$this->isExists($oldDir)) {
                  return false;
             }
             
             if(!$this->isExists($aimDir)) {
                 $this->mkDir($aimDir);
             }
             
             $dirHandle = opendir($oldDir);
             
             if(!$dirHandle) {
                 return false;
             }
             
             while($file = readdir($dirHandle)) {
                  if($file == '.'  || $file == '..') {
                     continue;
                  }
                  
                  
                  if(!$this->isDir($oldDir.$file)){
                        $this->cpFile($oldDir.$file, $aimDir.$file, $overWrite);
                  }else{
                        $this->cpDir($oldDir.$file, $aimDir.$file, $overWrite);
                  }
             }
             
             return closedir($dirHandle);
         
         }
         
         
         //复制文件
         private function cpFile($fileUrl, $aimUrl, $overWrite) {
              //判断文件是否存在
              if(!$this->isExists($fileUrl)) {
                  return false;
              }
              
              if($this->isExists($aimUrl) && $overWrite == false) {
                  return false;
              }elseif($this->isExists($aimUrl) && $overWrite == true) {
                  $this->rmFile($aimUrl);
              }
              
              $dir = dirname($aimUrl);
              
              $this->mkDir($dir);
              
              copy($fileUrl,$aimUrl);
              
              return true;
         }
         
         
     }
 
 
     $file = new qyFile();
     
     //$file->mkDir('uploads/20121029/pictrue'); 
     
     //$file->touch('uploads/20121029/pictrue/1.php');
     
     //$file->mvDir('uploads','myupload','false');
     
     //$file->rmDir('myupload');
     
     // $file->rmFile('uploads/1.txt');
     
     //$file->mvFile('uploads/1.txt','myupload/1.txt',false);
     
     
     //$file->mv('uploads','myupload',false);
     
     //$file->cpdir('uploads','up',false);
     
     //$file->write('myupload/1.txt','11111111111', false);
     
     //echo $file->readAll('myupload/1.txt');
     
     //echo $file->SizeCount($file->dirSize('Guest0.1'));
     
     echo  $file->size('myupload');
     
?>

 

转载于:https://www.cnblogs.com/fuchuangxin/archive/2012/10/30/2745839.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值