PHPコーディング

ディレクトリ以下のファイルとディレクトリを全て削除

2008年08月30日
ディレクトリの削除は【rmdir】関数を使えばできるのですが、ディレクトリが空の場合のみ削除できます。
つまり、ディレクトリの下に、ファイルやディレクトリがあると、エラーになります。


そのため、まず削除したいディレクトリにあるファイルとディレクトリを削除した後で、目的のディレクトリを削除します。

function DirAllDelete($del_dir, $flag="off"){
 $dir = @opendir($del_dir);
 if($dir == true){
  while($file = readdir($dir)){
   if(($file != ".") && ($file != "..")){
    //ファイルならすぐ削除
    if(is_file($del_dir."/".$file) === true){
     $result = unlink($del_dir."/".$file);
     if($result === false){
      return false;
     }
    }
    //ディレクトリなら、まずその下のファイルを削除
    elseif(is_dir($del_dir."/".$file) === true){
     //ファイル数カウント
     $result = $this -> CntFileNum($del_dir."/".$file, $cnt);
     if($result === false){
      return false;
     }
     //ファイルがなければディレクトリ削除
     if($cnt == 0){
      $result = rmdir($del_dir."/".$file);
      if($result === false){
       return false;
      }
     }
     //ファイルがあれば、まずファイルを削除
     else{
      $result = $this -> DirAllDelete($del_dir."/".$file);
      if($result === false){
       return false;
      }
      //その後ディレクトリを削除
      $result = rmdir($del_dir."/".$file);
      if($result === false){
       return false;
      }
     }
    }
   }
  }
 }
 else{
  return false;
 }
 
 //自分自身も削除の場合
 if($flag == 'on'){
  $result = rmdir($del_dir);
  if($result === false){
   return false;
  }
 }
 
 return true;
}

function CntFileNum($dir_cnt, &$cnt){
 $cnt = 0;
 $dir = @opendir($dir_cnt);
 if($dir == true){
  while($file = readdir($dir)){
   if(($file != ".") && ($file != "..")){
    $cnt++;
   }
  }
  return true;
 }
 else{
  return false;
 }
}


コール側は、
$result = DirAllDelete($del_dir, 'on');
です。
2008年08月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
先月
来月
カテゴリ
検索
関連サイト
プロフィール
【ネットネーム】
みゅー

キャラクター by ツカエルサイト


【趣味】
・プログラミング
・写真
・楽器演奏
・手芸
・日曜大工
・家の中の不便を便利に
・考える
・自然科学
・猫と戯れる
・ジグソーパズル

【仕事】
・派遣社員でSE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。
・経験言語:VB6、VB.NET、PHP、Perl、JAVA、Oracle、SQLServer、PostgreSQL



【名前】
アン(足)

2014年4月22日生まれ 女の子
あだ名は くノ一
普段は普通にしゃべりますが、興奮すると『ニャ』を連発します

【趣味】
・狩
・ご飯を食べる
・ママのお手伝い

【仕事】
ママのビジネスの看板招き猫
ママの代わりにPC入力
仕事中のママの右腕を温める
ママに心配をかける
いろんな事をしでかしてママを退屈させない

RSSフィード