php专区

 首页 > php专区 > PHP应用 > php类库 > php文件操作类,建立,写入,删除,修改,复制,移动,创

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

分享到:
【字体:
导读:
          php文件操作类,本文件操作类可实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录 大家可参考参考 实例1,代码如下:?php *文件名:ClassFile php功能:面向对象,文件操作类(查...

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

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

实例1,代码如下:

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

实例2,代码如下:

  1. /** 
  2. *本类为文件操作类,实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录 
  3. * 列出目录里的文件等功能,路径后面别忘了加"/" 
  4.  
  5. * @author 路人郝 
  6. * @copyright myself 
  7.  
  8. */ 
  9. class fileoperate 
  10. var path;// 文件路径 
  11. var name;//文件名 
  12. var result;//对文件操作后的结果 
  13.  
  14. /** 
  15. * 本方法用来在path目录下创建name文件 
  16. * 
  17. * @param string path 
  18. * @param string name 
  19. */  
  20. function creat_file(path,name)//建立文件 
  21. {  
  22. filename=path.name; 
  23. if (file_exists(filename)) 
  24. echo "文件已经存在,请换个文件名"
  25. else  
  26. if (file_exists(path)) 
  27. touch(name); 
  28. rename(name,filename); 
  29. echo "文件建立成功 
    "
  30. else
  31. echo "目录不存在,请检查"
  32.  
  33. /** 
  34. * 本方法用来写文件,向path路径下name文件写入content内容,bool为写入选项,值为1时 
  35. * 接着文件原内容下继续写入,值为2时写入后的文件只有本次content内容 
  36. * 
  37. * @param string_type path 
  38. * @param string_type name 
  39. * @param string_type content 
  40. * @param bool_type bool 
  41. */ 
  42. function write_file(path,name,content,bool) //写文件 
  43. filename=path.name; 
  44. if (bool==1) { 
  45. if (is_writable(filename)) { 
  46. handle=fopen(filename,'a'); 
  47. if (!handle) { 
  48. echo "文件不能打开或文件不存在"
  49. exit
  50. result=fwrite(handle,content); 
  51. if (!result) { 
  52. echo "文件写入失败"
  53. echo "文件写入成功"
  54. fclose(handle); 
  55. else echo "文件不存在"
  56. if (bool==2) { 
  57. if (!file_exists(filename)) { 
  58. this->creat_file(path,name); 
  59. handle=fopen(filename,'a'); 
  60. if (fwrite(handle,content)); 
  61. echo "文件写入成功"
  62.  
  63. else { 
  64. unlink(filename); 
  65. this->creat_file(path,name); 
  66. this->write_file(path,name,content,1); 
  67. echo "文件修改成功"
  68.  
  69.  
  70. /** 
  71. * 本方法删除path路径下name文件 
  72. * 
  73. * @param string_type path 
  74. * @param string_type name 
  75. */ 
  76. function del_file(path,name){ //删除文件 
  77. filename=path.name; 
  78.  
  79. if (!file_exists(filename)) { 
  80. echo "文件不存在,请确认路径是否正确"
  81. else { 
  82. if (unlink(filename)){ 
  83. echo "文件删除成功"
  84. else echo "文件删除失败"
  85.  
  86.  
  87. /** 
  88. * 本方法用来修改path目录里name文件中的内容(可视) 
  89. * 
  90. * @param string_type path 
  91. * @param string_type name 
  92. */ 
  93. function modi_file(path,name){ //文件修改 
  94. filename=path.name; 
  95. handle=fopen(filename,'r+'); 
  96. content=file_get_contents(filename); 
  97. echo ""
  98. echo "content文件内容"
  99. echo "

    "

  100. echo "文件路径

    "

  101. echo ""
  102. echo ""
  103.  
  104. /** 
  105. * 本方法用来复制name文件从spath到dpath 
  106. * 
  107. * @param string name 
  108. * @param string spath 
  109. * @param string dpath 
  110. */ 
  111. function copy_file(name,spath,dpath) //文件复制 
  112. filename=spath.name; 
  113. if (file_exists(filename)) { 
  114. handle=fopen(filename,'a'); 
  115. copy(filename,dpath.name); 
  116. if (file_exists(dpath.name)) 
  117. echo "文件复制成功"
  118. else echo "文件复制失败"
  119. else echo "文件不存在"
  120.  
  121. /** 
  122. * 本方法把name文件从spath移动到path路径 
  123. * 
  124. * @param string_type path 
  125. * @param string_type dirname 
  126. * @param string_type dpath 
  127. */ 
  128. function move_file(name,spath,dpath) //移动文件 
  129. filename=spath.name; 
  130. if (file_exists(filename)) { 
  131. result=rename(filename,dpath.name); 
  132. if (result==false or !file_exists(dpath)) 
  133. echo "文件移动失败或目的目录不存在"
  134. else  
  135. echo "文件移动成功"
  136. else { 
  137. echo "文件不存在,无法移动"
  138. ?> 

实例3,代码如下:

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

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