前一陣時間寫的一個PHP類了,不知道有沒有用哦!(加說明)

來源:互聯網
上載者:User
<?
/***********************************************************************************/
/*/                                                                               /*/
/*/                        Program: File System Class(FSC)                        /*/
/*/                        PHP Programer :吳雙(James Wu)                          /*/
/*/                        Email: wu-shuang@163.net                               /*/
/*/                        HomePage: http://www.dev-php.com                       /*/
/*/                        Date: 2002-01-24                                       /*/
/*/                                                                               /*/
/***********************************************************************************/

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                                   /*/
/*********************************************************************************/
}
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.