一个功能完整的PHP文件操作类

Posted on 2008-08-15 10:18  flourish  阅读(761)  评论(0)    收藏  举报
使用方法:    
只读:$ifile = new iFile('test.txt','r');    
读写:$ifile = new iFile('test.txt','w');    
快读:$ifile = new iFile('test.txt','dr');    
快写:$ifile = new iFile('test.txt','w','测试一下咯');    
读取文件内容:$ifile->getFileData();    
显示读取/快读数据:echo $ifile->Data;    
写入文件内容:$ifile->WriteFile('测试一下咯',3);    
关闭文件句柄:$ifile->ColseFile();      
注意:写入/快写后自动关闭文件句柄.

  1. <?   
  2. class iFile {       
  3.         
  4.     private $Fp;       
  5.     private $Pipe//(fopen,popen)(f,p)       
  6.     private $File;       
  7.     private $OpenMode//(r,r+,w,w+,a,a+,b)       
  8.     private $Data;       
  9.         
  10.     function iFile($File,$Mode = 'r',$Data4Write='',$Pipe = 'f'){       
  11.         $this -> File = $File;       
  12.         $this -> Pipe = $Pipe;       
  13.         if($Mode == 'dr'){       
  14.             $this -> OpenMode = 'r';       
  15.             $this -> OpenFile();       
  16.             $this -> getFileData();       
  17.         }else{       
  18.             $this -> OpenMode = $Mode;       
  19.             $this -> OpenFile();       
  20.         }       
  21.         if($this->OpenMode=='w'&$Data4Write!=''){       
  22.             $this -> WriteFile($Data4Write,$Mode = 3);       
  23.         }       
  24.     }       
  25.         
  26.     function OpenFile(){       
  27.         if ($this -> OpenMode == 'r'||$this -> OpenMode == 'r+'){       
  28.             if($this->CheckFile()){       
  29.                 if ($this -> Pipe == 'f') {       
  30.                     $this->Fp = fopen($this -> File, $this -> OpenMode);       
  31.                 } elseif ($Pipe == 'p') {       
  32.                     $this->Fp = popen($this -> File, $this -> OpenMode);       
  33.                 }else{       
  34.                     Die("请检查文件打开参数3,f:fopen()");       
  35.                 }       
  36.             } else {       
  37.                 Die("文件访问错误,请检查文件是否存在!");       
  38.             }       
  39.         } else {       
  40.             if ($this -> Pipe == 'f') {       
  41.                 $this->Fp = fopen($this -> File, $this -> OpenMode);       
  42.             } elseif ($Pipe == 'p') {       
  43.                 $this->Fp = popen($this -> File, $this -> OpenMode);       
  44.             } else {       
  45.                 Die("请检查文件打开参数3,f:fopen()");       
  46.             }       
  47.         }       
  48.     }       
  49.         
  50.         
  51.     function CloseFile(){       
  52.         if ($this->Pipe == 'f'){       
  53.             @fclose($this->Fp);       
  54.         } else {       
  55.             @pclose($this->Fp);       
  56.         }       
  57.     }       
  58.         
  59.     function getFileData(){       
  60.         @flock($this->Fp, 1);       
  61.         $Content = fread($this->Fp, filesize($this->File));       
  62.         $this->Data = $Content;       
  63.     }       
  64.         
  65.         
  66.     function CheckFile(){       
  67.         if (file_exists($this -> File)) { return true; } else { return false; }       
  68.     }       
  69.         
  70.     function WriteFile($Data4Write,$Mode = 3){       
  71.         @flock($this->Fp,$Mode);       
  72.         fwrite($this->Fp,$Data4Write);       
  73.         $this->CloseFile();       
  74.         return true;       
  75.     }   
  76. }    
  77. ?>  

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3