<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. php語言

    php遞歸創建和刪除文件夾的代碼

    時間:2025-01-20 10:44:19 php語言 我要投稿
    • 相關推薦

    php遞歸創建和刪除文件夾的代碼

      php中遞歸創建和刪除文件夾的代碼,供大家學習參考。就跟隨百分網小編一起去了解下吧,想了解更多相關信息請持續關注我們應屆畢業生考試網!

      方法一

      復制代碼 代碼如下:

      <?php

      /**

      * 目錄生成類 :UtilsMakeDir

      * @author yepeng

      * @since 2010.3.18

      */

      class UtilsMakeDir{

      //基目錄 建立目錄時不會對這個目錄進行建立。這應該是個已經存在的目錄

      private static $makeBasePath = 'video';

      private static $delBasePath = 'video';

      /**

      * 遞歸建立目錄,

      * 建立成功返回這個全路徑,

      * 建立失敗返回false

      * @param String $pathString 路徑字符串如'2/3/4/5'

      * @return false or string

      public static function makeDir($pathString){

      $pathArray = explode('/',$pathString);

      if(empty($pathArray[0])){

      return false;

      }

      $path = array_shift($pathArray);

      self::$basePath = self::$basePath.'/'.$path;

      if(is_dir(self::$basePath)){

      $path = implode('/',$pathArray);

      self::makeDir($path);

      }

      else{

      @mkdir(self::$basePath,0777);

      $path = implode('/',$pathArray);

      self::makeDir($path);

      }

      if(is_dir(self::$basePath)){

      return self::$basePath;

      }

      else{

      return false;

      }

      } */

      /**

      * 建立目錄,包括基目錄,比如圖片要放在video(video為存在的目錄)下面,你傳入的參數應該是video/2/3/4

      * 建立成功返回這個全路徑,

      * 建立失敗返回false

      * @param String $pathString 路徑字符串如'video/2/3/4/5'

      * @return false or string

      **/

      public static function makeDir($pathString){

      $pathArray = explode('/',$pathString);

      $tmpPath = array_shift($pathArray);

      foreach ($pathArray as $val){

      $tmpPath .= "/".$val;

      if(is_dir($tmpPath)){

      continue;

      }

      else {

      @mkdir($tmpPath,0777);

      }

      }

      if(is_dir($tmpPath)){

      return $tmpPath;

      }

      else{

      return false;

      }

      } /**

      * 遞歸刪除

      * 刪除目錄及文件

      * 如果傳一個‘video/2/3/4'這樣的路徑將刪除4下的所有目錄和文件

      * @param string $stringPath

      */

      public static function delDir($stringPath){

      if(!$handle = @opendir($stringPath)){

      return false;

      }

      while (false !==($file = readdir($handle))){

      if($file !='.' && $file != '..'){

      $tmpdir = $stringPath."/".$file;

      if(is_dir($tmpdir)){

      self::delDir($tmpdir);

      rmdir($tmpdir);

      }

      if(is_file($tmpdir)){

      unlink($tmpdir);

      }

      }

      }

      closedir($handle);

      }}

      ?>

      循環與遞歸,在winxp下測試成功,只要php文件編碼為gb2312,文件名隨意,應該把文件名改為編碼為gb2312就可以了。

      復制代碼 代碼如下:

      <?php

      deltree('./復件 復件 復件 復件 復件 復件 復件 復件 aaa');

      function deltree($pathdir)

      {

      //echo $pathdir.'<br/>';//我調試時用的

      if(is_empty_dir($pathdir))//如果是空的

      {

      rmdir($pathdir);//直接刪除

      }

      else

      {//否則讀這個目錄,除了.和..外

      $d=dir($pathdir);

      while($a=$d->read()) //下只刪除$pathdir下

      {

      if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..'))

      {

      unlink($pathdir.'/'.$a); //如果是文件就直接刪除

      }elseif(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) //如果是目錄

      {

      if(!is_empty_dir($pathdir.'/'.$a))//是否為空

      {

      deltree($pathdir.'/'.$a); //如果不是,調用自身

      }else

      {

      rmdir($pathdir.'/'.$a); //如果是空就直接刪除

      }

      }

      }

      $d->close();

      //echo "必須先刪除目錄下的所有文件";//我調試時用的

      rmdir($pathdir);

      }

      }

      function is_empty_dir($pathdir)

      {

      //判斷目錄是否為空,我的方法不是很好吧?除了.和..之外有其他東西不是為空

      $d=opendir($pathdir);

      $i=0;

      while($a=readdir($d))

      {

      $i++;

      }

      closedir($d);

      if($i>2){return false;}

      else return true;

      }

      ?>

      方法二

      在winxp下測試成功,只要php文件編碼為gb2312,文件名隨意,應該把文件名改為編碼為gb2312,就行,沒測。

      復制代碼 代碼如下:

      <?php

      header("Content-Type:text/html; charset=gb2312");

      if(deleteDir('./復件 復件 復件 復件 復件 復件 復件 復件 復件 復件 復件 aaa'))

      echo "刪除成功";

      function deleteDir($dir)

      {

      if (@rmdir($dir)==false && is_dir($dir)) //刪除不了,進入刪除所有文件

      {

      if ($dp = opendir($dir))

      {

      while (($file=readdir($dp)) != false)

      {

      if($file!='.' && $file!='..')

      { //echo $file=$dir.'/'.$file;echo '<br/>';

      $file=$dir.'/'.$file;

      if (is_dir($file)) //是真實目錄

      {

      deleteDir($file);

      }else {

      unlink($file);

      }

      }

      }

      closedir($dp);

      }else

      {

      return false;

      }

      }

      if (is_dir($dir) && @rmdir($dir)==false) //是目錄刪除不了

      return false;

      return true;

      }

      ?>

    【php遞歸創建和刪除文件夾的代碼】相關文章:

    php遞歸遍歷刪除文件的方法10-25

    解讀php全排列遞歸算法代碼07-07

    用php自定義函數之遞歸刪除文件及目錄09-13

    PHP遞歸效率分析08-25

    php遞歸遍歷多維數組的方法10-06

    PHP如何遞歸實現json類06-27

    php怎么刪除cookie08-12

    PHP代碼優化技巧09-10

    PHP實用的代碼實例08-12

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人