刪除目錄下指定類型或格式的文件(多層級刪除)

提示:謹慎操作,因爲刪除的文件不會進入回收站!

header("Content-type: text/html;charset=utf-8");
error_reporting(E_ALL ^E_NOTICE^E_WARNING);
//從文件夾裏刪除指定後綴的文件
class  delFileByExt{
    private $delfile_arr=array('xls');//要刪除的文件格式
    static $num=0;
    static $del_num=0;
    static $delog=array();
    public $dir;
    function __construct($dir)
    {
        $this->dir=$dir;
    }
    public function read_all($dir){
        if(!is_dir($dir)){
            return false;
        }
        $handle = opendir($dir);
        if($handle){
            while(($fl = readdir($handle)) !== false){
                $temp = $dir.DIRECTORY_SEPARATOR.$fl;
                //如果不加  $fl!='.' && $fl != '..'  則會造成把$dir的父級目錄也讀取出來
                if(is_dir($temp) && $fl!='.' && $fl != '..'){
                    echo '目錄:'.$temp.'<br>';
                    $this->read_all($temp);
                }else{
                    if($fl!='.' && $fl != '..'){
                        if($temp){
                            self::$num++;
                            $arr_path=explode('.',$temp);
                            $ext=end($arr_path);
                            echo '---文件:'.$temp.'<br>';
                            if(in_array($ext,$this->delfile_arr)){
                                $return_state=unlink($temp);
                                if($return_state){
                                    echo '<b style="color:red;">---已刪除:'.$temp.'</b><br>';
                                    self::$del_num++;
                                    if(empty(self::$delog[$ext])){
                                        self::$delog[$ext]=1;
                                    }else{
                                        self::$delog[$ext]+=1;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    //統計文件總數
    public function countNum(){
        echo '該文件夾:'.$this->dir.'統計如下:';
        echo '--一共有'.self::$num.'個文件!<br>';
        echo '----其中有'.self::$del_num.'個後綴爲'.join(',',$this->delfile_arr).'的文件已經被刪除!<br>';
        foreach (self::$delog as $k=>$v){
            echo '------包含有'.$v.'個文件 '.$k.' 格式的文件!<br>';
        }
    }
}
//使用
$obj=new delFileByExt('D:\PROJECT\jysx_single\public\file\upload\2015-07\15');
$obj->read_all($obj->dir);
$obj->countNum();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章