zoukankan      html  css  js  c++  java
  • 非常实用的php各种文件操作函数

    <?

    class FSC{

    /**************************************************************************/
    // 函数名: getfilesource
    // 功能: 得到指定文件的内容
    // 参数: $file 目标文件
    /**************************************************************************/
    function getfilesource($file){
         if($fp=fopen($file,'r')){
             $filesource=fread($fp,filesize($file));
             fclose($fp);
             return $filesource;
         }
         else
             return false;
    }
    /**************************************************************************/
    // 函数名: writefile
    // 功能: 创建新文件,并写入内容,如果指定文件名已存在,那将直接覆盖
    // 参数: $file -- 新文件名
    // $source   文件内容
    /**************************************************************************/
    function writefile($file,$source){
         if($fp=fopen($file,'w')){
             $filesource=fwrite($fp,$source);
             fclose($fp);
             return $filesource;
         }
         else
             return false;
    }
    /**************************************************************************/
    // 函数名: movefile
    // 功能: 移动文件
    // 参数: $file -- 待移动的文件名
    // $destfile -- 目标文件名
    // $overwrite 如果目标文件存在,是否覆盖.默认是覆盖.
    // $bak 是否保留原文件 默认是不保留即删除原文件

    /**************************************************************************/
    function movefile($file,$destfile,$overwrite=1,$bak=0){
         if(file_exists($destfile)){
             if($overwrite)
                 unlink($destfile);
             else
                 return false;
         }
         if($cf=copy($file,$destfile)){
             if(!$bak)
                 return(unlink($file));
             }
         return($cf);
    }
       /**************************************************************************/
    // 函数名: movedir
    // 功能: 这是下一涵数move的附助函数,功能就是移动目录
    /**************************************************************************/
    function movedir($dir,$destdir,$overwrite=1,$bak=0){
          @set_time_limit(600);
         if(!file_exists($destdir))
             FSC::notfate_any_mkdir($destdir);
         if(file_exists($dir)&&(is_dir($dir)))
             {
             if(substr($dir,-1)!='/')$dir.='/';
             if(file_exists($destdir)&&(is_dir($destdir))){
             if(substr($destdir,-1)!='/')$destdir.='/';
                 $h=opendir($dir);
                 while($file=readdir($h)){
                     if($file=='.'||$file=='..')
                         {
                         continue;
                         $file="";
                     }
                     if(is_dir($dir.$file)){
                         if(!file_exists($destdir.$file))
                             FSC::notfate_mkdir($destdir.$file);
                         else
                             chmod($destdir.$file,0777);
                         FSC::movedir($dir.$file,$destdir.$file,$overwrite,$bak);
                         FSC::delforder($dir.$file);
                         }
                     else
                     {
                         if(file_exists($destdir.$file)){
                             if($overwrite)unlink($destdir.$file);
                             else{
                                 continue;
                                 $file="";
                                 }
                         }
                         if(copy($dir.$file,$destdir.$file))
                             if(!$bak)
                                 if(file_exists($dir.$file)&&is_file($dir.$file))
                                     @unlink($dir.$file);
                     }
                 }
             }
             else
                 return false;
         }
         else
             return false;
    }
    /**************************************************************************/
    // 函数名: move
    // 功能: 移动文件或目录
    // 参数: $file -- 源文件/目录
    //        $path -- 目标路径
    //        $overwrite -- 如是目标路径中已存在该文件时,是否覆盖移动
    //                   --   默认值是1, 即覆盖
    //        $bak   -- 是否保留备份(原文件/目录)
    /**************************************************************************/
    function move($file,$path,$overwrite=1,$bak=0)
          {
         if(file_exists($file)){
             if(is_dir($file)){
                 if(substr($file,-1)=='/')$dirname=basename(substr($file,0,strlen($file)-1));
                 else $dirname=basename($file);
                 if(substr($path,-1)!='/')$path.='/';
                 if($file!='.'||$file!='..'||$file!='../'||$file!='./')$path.=$dirname;
                 FSC::movedir($file,$path,$overwrite,$bak);
                 if(!$bak)FSC::delforder($file);
                 }
             else{
                 if(file_exists($path)){
                     if(is_dir($path))chmod($path,0777);
                     else {
                         if($overwrite)
                             @unlink($path);
                         else
                             return false;
                     }
                 }
                 else
                     FSC::notfate_any_mkdir($path);
                 if(substr($path,-1)!='/')$path.='/';
                 FSC::movefile($file,$path.basename($file),$overwrite,$bak);
             }
         }
         else
             return false;
    }
    /**************************************************************************/
    // 函数名: delforder
    // 功能: 删除目录,不管该目录下是否有文件或子目录,全部删除哦,小心别删错了哦!
    // 参数: $file -- 源文件/目录

    /**************************************************************************/
    function delforder($file) {
          chmod($file,0777);
          if (is_dir($file)) {
               $handle = opendir($file);
               while($filename = readdir($handle)) {
                if ($filename != "." && $filename != "..")
                 {
                     FSC::delforder($file."/".$filename);
                 }
               }
               closedir($handle);
               return(rmdir($file));
          }
          else {
             unlink($file);
           }
    }
    /**************************************************************************/
    // 函数名: notfate_mkdir
    // 功能: 创建新目录,这是来自php.net的一段代码.弥补mkdir的不足.
    // 参数: $dir -- 目录名

    /**************************************************************************/
    function notfate_mkdir($dir,$mode=0777){
         $u=umask(0);
         $r=mkdir($dir,$mode);
         umask($u);
         return $r;
    }
    /**************************************************************************/
    // 函数名: notfate_any_mkdir
    // 功能: 创建新目录,与上面的notfate_mkdir有点不同,因为它多了一个any,即可以创建多级目录
    //          如:notfate_any_mkdir("abc/abc/abc/abc/abc")
    // 参数: $dirs -- 目录名

    /**************************************************************************/
    function notfate_any_mkdir($dirs,$mode=0777)
    {
       if(!strrpos($dirs,'/'))
         {
           return(FSC::notfate_mkdir($dirs,$mode));
       }else
           {
           $forder=explode('/',$dirs);
           $f='';
           for($n=0;$n<count($forder);$n++)
               {
               if($forder[$n]=='') continue;
               $f.=((($n==0)&&($forder[$n]<>''))?(''):('/')).$forder[$n];
               if(file_exists($f)){
                   chmod($f,0777);
                   continue;
                   }
               else
                   {
                   if(FSC::notfate_mkdir($f,$mode)) continue;
                   else
                       return false;
               }
             }
             return true;
           }
    }

    /*********************************************************************************/
    /*/                             End Class FSC                                    /*/
    /*********************************************************************************/
    }
    ?>

  • 相关阅读:
    目前博客园NB团队成员名单
    [征询意见]博客园准备组建在线培训团队
    [调查]园子里有哪些朋友在做开源项目
    都是百度惹的祸
    准备成立NBear开源项目团队—博客园NB团队
    [公告]欢迎各地.NET俱乐部负责人与我联系
    [公告]服务器搬迁
    VS 2005 文本编码小技巧
    Net Framework 2.0 事务处理
    ArgoUML 开源UML 建模工具
  • 原文地址:https://www.cnblogs.com/luobo098/p/12608484.html
Copyright © 2011-2022 走看看