VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php文件操作类,建立,写入,删除,修改,复制,移动,创建目录

php文件操作类,本文件操作类可实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录.大家可参考参考.

实例1,代码如下:

  1. <?php 
  2.  
  3.  /* 
  4.   文件名:ClassFile.php 
  5.   功能:面向对象,文件操作类(查看文件,删除文件,上传文件) 
  6.   作者:感染源 
  7.   时间:2007-1-11 
  8.  */ 
  9.  
  10.  class ClassFile 
  11.  { 
  12.   private $dir_name; 
  13.   private $file_name; 
  14.   private $dh; 
  15.   //private $file_path; 
  16.    
  17.    
  18.   //构造函数,打开工作文件目录 
  19.   function __construct($PDirName) 
  20.   { 
  21.    $this->dir_name = $PDirName; 
  22.    if(is_dir($this->dir_name)) 
  23.      
  24.     //打开目录 
  25.     if($this->dh = opendir($this->dir_name) or dir('路径错误,请重新检查路径!')); 
  26.   }//function __construct(); 
  27.    
  28.    
  29.   //关闭文件目录 
  30.   function __destruct() 
  31.   { 
  32.    //关闭目录 
  33.    closedir($this->dh); 
  34.   }//function __destruct(); 
  35.    
  36.    
  37.   //向当前文件夹添加文件,同时检查是否有重名的文件 
  38.   function AddFile($temp_file) 
  39.   { 
  40.    //读取目录 
  41.    while($this->file_name = readdir($this->dh)) 
  42.    { 
  43.     if($this->file_name==$temp_file)  //检查是否和已存在的文件重名 
  44.     { 
  45.      echo '文件重名,请更改文件名...'; 
  46.      exit; 
  47.     } 
  48.     else 
  49.     { 
  50.      //将临时文件复制到当前目录中 
  51.      $up_id = copy($temp_file,"$this->dir_name/$temp_file"); 
  52.      if(!$up_id) 
  53.      { 
  54.       echo '文件上传失败,请重新再传...'; 
  55.       exit; 
  56.      } 
  57.      else 
  58.      { 
  59.       unlink($temp_file);  //删除临时文件 
  60.        
  61.       echo "<script language='javascript'>"; 
  62.       echo "alert("文件上传成功!");"; 
  63.       echo "</script>"; 
  64.      }//if 
  65.     }//if 
  66.    }//while 
  67.   }//function AddFile(); 
  68.    
  69.    
  70.   //删除文件 
  71.   function DelFile($del_file) 
  72.   { 
  73.    if(is_file($del_file)) 
  74.    { 
  75.     //$path = "$this->dir_name/$del_file"; 
  76.     if(unlink($del_file)) 
  77.     { 
  78.      echo "<script language='javascript'>"; 
  79.      echo "alert('成功删除文件!');"; 
  80.      echo "</script>"; 
  81.     } 
  82.       
  83.    }//if 
  84.   }//function DelFile(); 
  85.    
  86.    
  87.   //读取文件 
  88.   function Read_File() 
  89.   { 
  90.     $result_file = array(); 
  91.     $i = 0; 
  92.    while($this->file_name = readdir($this->dh)) 
  93.    { 
  94.     if($this->file_name=='.'||$this->file_name=='..') 
  95.     {} 
  96.     else 
  97.     { 
  98.      $result_file[$i++] = "$this->dir_name/$this->file_name"; 
  99.     }//if 
  100.      
  101.    }//while 
  102.    return $result_file; //返回文件名数组 
  103.   }//function Read_File() 
  104.  }//Class ClassFile 
  105. ?> 

实例2,代码如下:

  1. <?php 
  2. /** 
  3. *本类为文件操作类,实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录 
  4. * 列出目录里的文件等功能,路径后面别忘了加"/" 
  5. *  
  6. * @author 路人郝 
  7. * @copyright myself 
  8. *  
  9. */ 
  10. class fileoperate 
  11. { 
  12. var path;// 文件路径 
  13. var name;//文件名 
  14. var result;//对文件操作后的结果 
  15.  
  16. /** 
  17. * 本方法用来在path目录下创建name文件 
  18. * 
  19. * @param string path 
  20. * @param string name 
  21. */  
  22. function creat_file(path,name)//建立文件 
  23. {  
  24. filename=path.name; 
  25. if (file_exists(filename)) 
  26. { 
  27. echo "文件已经存在,请换个文件名"; 
  28. } 
  29. else  
  30. { 
  31. if (file_exists(path)) 
  32. { 
  33. touch(name); 
  34. rename(name,filename); 
  35. echo "文件建立成功 </br>"; 
  36. } 
  37. else{ 
  38. echo "目录不存在,请检查"; 
  39. } 
  40. } 
  41. } 
  42.  
  43. /** 
  44. * 本方法用来写文件,向path路径下name文件写入content内容,bool为写入选项,值为1时 
  45. * 接着文件原内容下继续写入,值为2时写入后的文件只有本次content内容 
  46. * 
  47. * @param string_type path 
  48. * @param string_type name 
  49. * @param string_type content 
  50. * @param bool_type bool 
  51. */ 
  52. function write_file(path,name,content,bool) //写文件 
  53. { 
  54. filename=path.name; 
  55. if (bool==1) { 
  56. if (is_writable(filename)) { 
  57. handle=fopen(filename,'a'); 
  58. if (!handle) { 
  59. echo "文件不能打开或文件不存在"; 
  60. exit; 
  61. } 
  62. result=fwrite(handle,content); 
  63. if (!result) { 
  64. echo "文件写入失败"; 
  65. } 
  66. echo "文件写入成功"; 
  67. fclose(handle); 
  68. } 
  69. else echo "文件不存在"; 
  70. } 
  71. if (bool==2) { 
  72. if (!file_exists(filename)) { 
  73. this->creat_file(path,name); 
  74. handle=fopen(filename,'a'); 
  75. if (fwrite(handle,content)); 
  76. echo "文件写入成功"; 
  77.  
  78. } 
  79. else { 
  80. unlink(filename); 
  81. this->creat_file(path,name); 
  82. this->write_file(path,name,content,1); 
  83. echo "文件修改成功"; 
  84. } 
  85. } 
  86.  
  87. } 
  88.  
  89. /** 
  90. * 本方法删除path路径下name文件 
  91. * 
  92. * @param string_type path 
  93. * @param string_type name 
  94. */ 
  95. function del_file(path,name){ //删除文件 
  96. filename=path.name; 
  97.  
  98. if (!file_exists(filename)) { 
  99. echo "文件不存在,请确认路径是否正确"; 
  100. } 
  101. else { 
  102. if (unlink(filename)){ 
  103. echo "文件删除成功"; 
  104. } 
  105. else echo "文件删除失败"; 
  106. } 
  107.  
  108. } 
  109.  
  110. /** 
  111. * 本方法用来修改path目录里name文件中的内容(可视) 
  112. * 
  113. * @param string_type path 
  114. * @param string_type name 
  115. */ 
  116. function modi_file(path,name){ //文件修改 
  117. filename=path.name; 
  118. handle=fopen(filename,'r+'); 
  119. content=file_get_contents(filename); 
  120. echo "<form id='form1' name='form1' action='modi_file.php' method='post'>"; 
  121. echo "<textarea name=content rows='10'>content</textarea>文件内容"; 
  122. echo "<p>"; 
  123. echo "<input type='text' name='filename' value=filename />文件路径<p>"; 
  124. echo "<input name=ss type=submit value=修改文件内容 />"; 
  125. echo "</form>"; 
  126. } 
  127.  
  128. /** 
  129. * 本方法用来复制name文件从spath到dpath 
  130. * 
  131. * @param string name 
  132. * @param string spath 
  133. * @param string dpath 
  134. */ 
  135. function copy_file(name,spath,dpath) //文件复制 
  136. { 
  137. filename=spath.name; 
  138. if (file_exists(filename)) { 
  139. handle=fopen(filename,'a'); 
  140. copy(filename,dpath.name); 
  141. if (file_exists(dpath.name)) 
  142. echo "文件复制成功"; 
  143. else echo "文件复制失败"; 
  144. } 
  145. else echo "文件不存在"; 
  146. } 
  147.  
  148. /** 
  149. * 本方法把name文件从spath移动到path路径 
  150. * 
  151. * @param string_type path 
  152. * @param string_type dirname 
  153. * @param string_type dpath 
  154. */ 
  155. function move_file(name,spath,dpath) //移动文件 
  156. { 
  157. filename=spath.name; 
  158. if (file_exists(filename)) { 
  159. result=rename(filename,dpath.name); 
  160. if (result==false or !file_exists(dpath)) 
  161. echo "文件移动失败或目的目录不存在"; 
  162. else  
  163. echo "文件移动成功"; 
  164. } 
  165. else { 
  166. echo "文件不存在,无法移动"; 
  167. } 
  168. } 
  169. } 
  170. ?> 

实例3,代码如下:

这个比较高级了,不但可以实现文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录,还可以实现移动目录,copy,替换等操作,代码如下:

  1. <?php 
  2. class FSC{ 
  3. // 函数名: getfilesource 
  4. // 功能: 得到指定文件的内容 
  5. // 参数: $file 目标文件 
  6. // test passed 
  7. function getfilesource($file){ 
  8.     if($fp=fopen($file,'r')){ 
  9.         $filesource=fread($fp,filesize($file)); 
  10.         fclose($fp); 
  11.         return $filesource; 
  12.     } 
  13.     else 
  14.         return false; 
  15. } 
  16.  
  17. // 函数名: writefile 
  18. // 功能: 创建新文件,并写入内容,如果指定文件名已存在,那将直接覆盖 
  19. // 参数: $file -- 新文件名 
  20. // $source  文件内容 
  21. //test passed 
  22. function writefile($file,$source){ 
  23.     if($fp=fopen($file,'w')){ 
  24.         $filesource=fwrite($fp,$source); 
  25.         fclose($fp); 
  26.         return $filesource; 
  27.     } 
  28.     else 
  29.         return false; 
  30. } 
  31.  
  32. // 函数名: movefile 
  33. // 功能: 移动文件 
  34. // 参数: $file -- 待移动的文件名 
  35. // $destfile -- 目标文件名 
  36. // $overwrite 如果目标文件存在,是否覆盖.默认是覆盖. 
  37. // $bak 是否保留原文件 默认是不保留即删除原文件 
  38. // test passed 
  39. function movefile($file,$destfile,$overwrite=1,$bak=0){ 
  40.     if(file_exists($destfile)){ 
  41.         if($overwrite) 
  42.             unlink($destfile); 
  43.         else 
  44.             return false; 
  45.     } 
  46.     if($cf=copy($file,$destfile)){ 
  47.         if(!$bak) 
  48.             return(unlink($file)); 
  49.         } 
  50.     return($cf); 
  51. } 
  52.    
  53. // 函数名: movedir 
  54. // 功能: 这是下一涵数move的附助函数,功能就是移动目录 
  55.  
  56. function movedir($dir,$destdir,$overwrite=1,$bak=0){ 
  57.      @set_time_limit(600); 
  58.     if(!file_exists($destdir)) 
  59.         FSC::notfate_any_mkdir($destdir); 
  60.     if(file_exists($dir)&&(is_dir($dir))) 
  61.         { 
  62.         if(substr($dir,-1)!='/')$dir.='/'; 
  63.         if(file_exists($destdir)&&(is_dir($destdir))){ 
  64.         if(substr($destdir,-1)!='/')$destdir.='/'; 
  65.             $h=opendir($dir); 
  66.             while($file=readdir($h)){ 
  67.                 if($file=='.'||$file=='..') 
  68.                     { 
  69.                     continue; 
  70.                     $file=""; 
  71.                 } 
  72.                 if(is_dir($dir.$file)){ 
  73.                     if(!file_exists($destdir.$file)) 
  74.                         FSC::notfate_mkdir($destdir.$file); 
  75.                     else 
  76.                         chmod($destdir.$file,0777); 
  77.                     FSC::movedir($dir.$file,$destdir.$file,$overwrite,$bak); 
  78.                     FSC::delforder($dir.$file); 
  79.                     } 
  80.                 else 
  81.                 { 
  82.                     if(file_exists($destdir.$file)){ 
  83.                         if($overwrite)unlink($destdir.$file); 
  84.                         else{ 
  85.                             continue; 
  86.                             $file=""; 
  87.                             } 
  88.                     } 
  89.                     if(copy($dir.$file,$destdir.$file)) 
  90.                         if(!$bak) 
  91.                             if(file_exists($dir.$file)&&is_file($dir.$file)) 
  92.                                 @unlink($dir.$file); 
  93.                 } 
  94.             } 
  95.         } 
  96.         else 
  97.             return false; 
  98.     } 
  99.     else 
  100.         return false; 
  101. } 
  102.  
  103. // 函数名: move 
  104. // 功能: 移动文件或目录 
  105. // 参数: $file -- 源文件/目录 
  106. //       $path -- 目标路径 
  107. //       $overwrite -- 如是目标路径中已存在该文件时,是否覆盖移动 
  108. //                  --  默认值是1, 即覆盖 
  109. //       $bak  -- 是否保留备份(原文件/目录) 
  110.  
  111. function move($file,$path,$overwrite=1,$bak=0) 
  112.      { 
  113.     if(file_exists($file)){ 
  114.         if(is_dir($file)){ 
  115.             if(substr($file,-1)=='/')$dirname=basename(substr($file,0,strlen($file)-1)); 
  116.             else $dirname=basename($file); 
  117.             if(substr($path,-1)!='/')$path.='/'; 
  118.             if($file!='.'||$file!='..'||$file!='../'||$file!='./')$path.=$dirname; 
  119.             FSC::movedir($file,$path,$overwrite,$bak); 
  120.             if(!$bak)FSC::delforder($file); 
  121.             } 
  122.         else{ 
  123.             if(file_exists($path)){ 
  124.                 if(is_dir($path))chmod($path,0777); 
  125.                 else { 
  126.                     if($overwrite) 
  127.                         @unlink($path); 
  128.                     else 
  129.                         return false; 
  130.                 } 
  131.             } 
  132.             else 
  133.                 FSC::notfate_any_mkdir($path); 
  134.             if(substr($path,-1)!='/')$path.='/'; 
  135.             FSC::movefile($file,$path.basename($file),$overwrite,$bak); 
  136.         } 
  137.     } 
  138.     else 
  139.         return false; 
  140. } 
  141.  
  142. // 函数名: delforder 
  143. // 功能: 删除目录,不管该目录下是否有文件或子目录,全部删除哦,小心别删错了哦! 
  144. // 参数: $file -- 源文件/目录 
  145. //test passed 
  146.  
  147. function delforder($file) { 
  148.      chmod($file,0777); 
  149.      if (is_dir($file)) { 
  150.           $handle = opendir($file); 
  151.           while($filename = readdir($handle)) { 
  152.            if ($filename != "." && $filename != "..") 
  153.             { 
  154.                 FSC::delforder($file."/".$filename); 
  155.             } 
  156.           } 
  157.           closedir($handle); 
  158.           return(rmdir($file)); 
  159.      } 
  160.      else { 
  161.         unlink($file); 
  162.       } 
  163. } 
  164.  
  165. // 函数名: notfate_mkdir 
  166. // 功能: 创建新目录,这是来自php.net的一段代码.弥补mkdir的不足. 
  167. // 参数: $dir -- 目录名 
  168.  
  169.  
  170. function notfate_mkdir($dir,$mode=0777){ 
  171.     $u=umask(0); 
  172.     $r=mkdir($dir,$mode); 
  173.     umask($u); 
  174.     return $r; 
  175. } 
  176.  
  177. // 函数名: notfate_any_mkdir 
  178. // 功能: 创建新目录,与上面的notfate_mkdir有点不同,因为它多了一个any,即可以创建多级目录 
  179. //         如:notfate_any_mkdir("abc/abc/abc/abc/abc") 
  180. // 参数: $dirs -- 目录名 
  181.  
  182.  
  183. function notfate_any_mkdir($dirs,$mode=0777) 
  184. { 
  185.   if(!strrpos($dirs,'/')) 
  186.     { 
  187.       return(FSC::notfate_mkdir($dirs,$mode)); 
  188.   }else 
  189.       { 
  190.       $forder=explode('/',$dirs); 
  191.       $f=''; 
  192.       for($n=0;$n<count($forder);$n++) 
  193.           { 
  194.           if($forder[$n]=='') continue; 
  195.           $f.=((($n==0)&&($forder[$n]<>''))?(''):('/')).$forder[$n]; 
  196.           if(file_exists($f)){ 
  197.               chmod($f,0777); 
  198.               continue; 
  199.               } 
  200.           else 
  201.               { 
  202.               if(FSC::notfate_mkdir($f,$mode)) continue; 
  203.               else 
  204.                   return false; 
  205.           } 
  206.         } 
  207.         return true; 
  208.       } 
  209. } 
  210.  
  211. } 
  212. ?> 
  213.  

出处:http://www.phpfensi.com/php/20140729/4045.html


相关教程