php遍歷文件夾下所有的文件夾,php列出文件夾下的所有文件

本文目錄一覽:

php寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾

最近剛寫的,可以遍歷指定目錄下的所有文件、文件夾、特定後綴的文件:

/**

 * 遍歷目錄

 * @param string $dir 絕對/相對路徑

 * @param string $filter 默認*返回所有文件及文件夾,*.php僅返回php文件,如果$patten為GLOB_BRACE可實現多文件篩選,如*.{php,html},返回php和html文件

 * @param const $patten 默認GLOB_BRACE,可選:GLOB_ONLYDIR,更多參數請參考手冊

 * @param string/bool $nocache 防止本次調用的結果緩存上次的結果,如果一個腳本僅調用一次本函數,則不用管,否則得設個值

 * @return array

 */

function globdir($dir, $filter = ‘*’, $patten = GLOB_BRACE, $nocache = null) {

    static $file_arr = array ();

    isset($nocache)  $file_arr = array ();

    if (!is_dir($dir)) return;

    if ($patten == GLOB_ONLYDIR) {

        $code = ‘if (is_dir($file)) {$file_arr[] = $file;globdir($file, “*”, GLOB_ONLYDIR);}’;

    } else {

        $code = ‘is_file($file) ? $file_arr[] = $file : globdir($file,”‘ . $filter . ‘”,’ . $patten . ‘);’;

    }

    array_walk(glob(“{$dir}/{$filter}”, $patten), create_function(‘$file, $k, $file_arr’, $code), $file_arr);

    if ($filter != ‘*’) {

        array_walk(glob(“{$dir}/*”, GLOB_ONLYDIR), create_function(‘$dir,$k,$param’, ‘list($filter, $patten) = explode(“|”, $param);globdir($dir, $filter, $patten);’), “{$filter}|{$patten}”);

    }

    return $file_arr;

}

php怎麼遍歷指定目錄下的文件(可指定文件類

遍歷目錄下文件,首先獲取該目錄下的所有文件名。

$folder = ‘./folder/’;

foreach (scandir($folder) AS $value) {

    if ($value == ‘.’ OR $value == ‘..’) continue;

    echo ‘文件名 : ‘ . $value . “\n”;

}

PHP遍歷輸出文件夾內的所有文件用遞歸演算法?

一般來說,類似這種遍歷輸出所有文件,大多採用遞歸演算法,這樣程序顯得比較簡潔,其實際執行效率來說,並不見得比其他方法更好。

以下是示例:

function file_list($path)

{

if ($handle = opendir($path))//打開路徑成功

{

while (false !== ($file = readdir($handle)))//循環讀取目錄中的文件名並賦值給$file

{

if ($file != “.” $file != “..”)//排除當前路徑和前一路徑

{

if (is_dir($path.”/”.$file))

{

// echo $path.”: “.$file.”br”;//去掉此行顯示的是所有的非目錄文件

file_list($path.”/”.$file);

}

else

{

echo $path.”: “.$file.”br”;

}

}

}

}

}

PHP怎麼遍歷一個文件夾下所有的文件,默認顯示第一個內容。

在 php 語言里,列出一個文件夾下所有的文件,最簡單的是使用 scandir 函數,示例如下:

?php

$dir    = ‘/tmp’;

$files1 = scandir($dir);

print_r($files1);

?

scandir 原型定義如下:

array scandir ( string $directory [, int $sorting_order [, resource $context ]] )

第2個參數,可以將獲取的文件列表按升、降序進行排序。

php 循環遍歷文件夾下面的所有目錄及文件並且每個文件都寫入一句話

/****************************

* 獲取目錄下的所有文件

* [$dir] 文件夾路徑

****************************/

function deepScanDir($dir) {

    $fileArr = array ();

    $dirArr = array ();

    $dir = rtrim($dir, ‘//’);

    if (is_dir($dir)) {

        $dirHandle = opendir($dir);

        while (false !== ($fileName = readdir($dirHandle))) {

            $subFile = $dir . DIRECTORY_SEPARATOR . $fileName;

            if (is_file($subFile)) {

                $fileArr[] = $subFile;

            }

            elseif (is_dir($subFile)  str_replace(‘.’, ”, $fileName) != ”) {

                $dirArr[] = $subFile;

                $arr = deepScanDir($subFile);

                $dirArr = array_merge($dirArr, $arr[‘dir’]);

                $fileArr = array_merge($fileArr, $arr[‘file’]);

            }

        }

        closedir($dirHandle);

    }

    return array (

        ‘dir’ = $dirArr,

        ‘file’ = $fileArr

    );

}

/****************************

* 將內容寫入文件

* [$filename] 文件路徑

* [$contents]  文件內容

* [$type]     讀寫類型

****************************/

function writeFileContents($filename, $contents, $type=’a’) {

    if (!($fd = fopen($filename, $type)))

        return FALSE;

    if (!fwrite($fd, $contents.”\n”)) {

        fclose($fd);

        return FALSE;

    }

    fclose($fd);

    return true;

}

#示例:

$dir = “/usr/local/php/test/”;

$dirFiles = deepScanDir($dir);

if(!empty($dirFiles[‘file’])){

    foreach($dirFiles[‘file’] as $file){

        writeFileContents($file, “Hello”, $type=’a+’);

    }

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286419.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 03:47
下一篇 2024-12-23 03:47

相關推薦

發表回復

登錄後才能評論