PHP封裝清除目錄下的所有文件函數

由於經常會遇到定期清除日誌或者定期清除過期文件的需求,網上查閱了部分資料,借鑑了一位大佬的思想方法,有了如下感悟

1.PHP清除目錄下的所有文件(測試使用版)

function deldir($path)
{
    echo $path;echo PHP_EOL;
    //如果是目錄則繼續
    if (is_dir($path)) {
        //掃描一個文件夾內的所有文件夾和文件並返回數組
        $p = scandir($path);
        foreach ($p as $val) {
            //排除目錄中的.和..
            if ($val != "." && $val != "..") {
                //如果是目錄則遞歸子目錄,繼續操作
                //is_dir() 函數檢查指定的文件是否是一個目錄
                if (is_dir($path .'/'.$val)) {
                    //子目錄中操作刪除文件夾和文件
                    $this->deldir($path .'/'.$val. '/');
                    //目錄清空後刪除空文件夾
                    @rmdir($path .'/'.$val);
                    print_r('刪除空目錄'.$path .'/'.$val);echo PHP_EOL;
                } else {
                    //如果是文件直接刪除
                    unlink($path . $val);
                    print_r('刪除文件'.$path . $val);echo PHP_EOL;
                }
            }
        }
    }else{
        print_r($path.'不是目錄');
    }
}

2.參數傳遞:/test,刪除test文件下的所有文件,結果打印如下:

在這裏插入圖片描述

3.PHP清除目錄下的所有文件(實際使用版)

function deldir($path)
{
    //如果是目錄則繼續
    if (is_dir($path)) {
        //掃描一個文件夾內的所有文件夾和文件並返回數組
        $p = scandir($path);
        foreach ($p as $val) {
            //排除目錄中的.和..
            if ($val != "." && $val != "..") {
                //如果是目錄則遞歸子目錄,繼續操作
                if (is_dir($path .'/'.$val)) {
                    //子目錄中操作刪除文件夾和文件
                    $this->deldir($path .'/'.$val. '/');
                    //目錄清空後刪除空文件夾
                    @rmdir($path .'/'.$val);
                } else {
                    //如果是文件直接刪除
                    unlink($path . $val);
                }
            }
        }
    }
}

4.補充說明:scandir函數

<?php
$dir = "/images/";
// 以升序排序 - 默認
$a = scandir($dir);
// 以降序排序
$b = scandir($dir,1);

print_r($a);
print_r($b);
?>

輸出結果:

Array
(
[0] => .
[1] => ..
[2] => cat.gif
[3] => dog.gif
[4] => horse.gif
[5] => myimages
)
Array
(
[0] => myimages
[1] => horse.gif
[2] => dog.gif
[3] => cat.gif
[4] => ..
[5] => .
)

5.補充說明:函數前面加@,可以屏蔽掉當前函數運行產生的錯誤

舉例如下:
假設要刪除當前目錄下的test.jpg文件
@unlink(‘test.jpg’);

unlink前不帶@的運行結果: 當前目錄不存在test.jpg這個文件,就會導致如下錯誤:
在這裏插入圖片描述
如果帶上@(示例中的語句):
結果就不會提示錯誤了,可以防止一些非必要的錯誤導致程序的終止。

發佈了32 篇原創文章 · 獲贊 27 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章