PHP如何取得目錄中的全部內容

醉折花枝作酒筹
發布: 2023-03-10 08:40:02
轉載
2255 人瀏覽過

本篇文章為大家介紹一下PHP取得目錄中全部內容的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

PHP如何取得目錄中的全部內容

這次我們來介紹一個SPL函式庫中的目錄迭代器,它的作用其實非常簡單,從名字就可以看出來,就是取得指定目錄下的所有內容。之前我們要遍歷目錄取得目錄及目錄下的所有檔案一般是需要進行遞歸遍歷的,自己寫這個程式碼說實話還是挺麻煩的,所以PHP為我們準備好了這套內建API,當輸入指定的目錄後,直接返回該目錄下所有子目錄及文件內容。當然,並不是樹型的,順序並不一定,想要組織成樹型還需要我們自己再處理。

話不多說,直接看程式碼:

$path = $argv[1];

// 获取目录下所有内容
$dirs = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);

foreach($dirs as $k=>$d){
    echo 'key:'. $k, PHP_EOL;
    if($d->isDir()){
        echo $d->getPathname(), PHP_EOL;
    }else{
        echo $d->getFilename(), PHP_EOL;
    }
}

//执行 php PHP获取目录中的全部内容RecursiveDirectoryIterator.php ../

// key:../.
// ../.
// key:../..
// ../..
// key:../source
// ../source
// key:../source/.
// ../source/.
// key:../source/..
// ../source/..
// key:../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// key:../source/PHP大文件读取操作.php
// PHP大文件读取操作.php
// key:../PHP大文件读取操作.md
// PHP大文件读取操作.md
// key:../PHP获取目录中的全部内容RecursiveDirectoryIterator.md
// PHP获取目录中的全部内容RecursiveDirectoryIterator.md
登入後複製

其實就一行程式碼,然後直接迴圈輸出這個迭代器。從結果中我們可以看出,先進入 source 目錄遍歷完成後再遍歷外部的文件內容,並依照目錄、檔案名稱的順序依序取得了目錄下的所有內容。是不是比我們自己寫遞歸函數方便很多。

如果我們想要取得目錄下的所有PHP文件,並且計算他們的文件總大小呢?使用這套迭代器操作也可以非常簡單的完成,我們只需要增加一個正規迭代器對前面的迭代器內容進行一下過濾就好了:

// 获取所有php文件
$regIts = new RegexIterator($dirs, '/^.+\.php$/i');
$fileSize = 0;
foreach($regIts as $k=>$p){
    echo $p->getSize() . ' ' .  $k, PHP_EOL;
    $fileSize += $p->getSize();
}
echo 'Total ', $fileSize, PHP_EOL;

// 622 ../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// 869 ../source/PHP大文件读取操作.php
// Total 1491
登入後複製

感覺就和ls -l 一樣,可以方便的讓我們能夠進行目錄下的相關操作。這個類別的使用就簡單的介紹到這裡,關於SPL庫中還有許多值得我們探索的能力,慢慢學習慢慢實踐,不斷提升我們面向優雅編程的能力。

測試程式碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202003/source/PHP%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%85%A8%E9%83%A8%E5%86%85%E5%AE%B9RecursiveDirectoryIterator.php
登入後複製

推薦學習:php影片教學

#

以上是PHP如何取得目錄中的全部內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板