首页 > 语言 > PHP > 正文

php文件操作类,建立,写入,删除,修改,复制,移动,创建目录

2024-09-04 11:44:03
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表