<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            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

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看