遍历某个文件夹(目录)下的所有文件 以及获取文件夹大小

时间:2022-06-05 12:26:56

 

一:遍历文件夹

http://www.nowamagic.net/php/php_TraversalAllFilesInDir.php

有这么一个需求,需要遍历某个文件夹(目录)下的所有文件。下面是解决这个问题所写的PHP代码,在这里记录一下。

第一种实现办法是用dir返回对象,第二种实现办法:用readdir()函数。代码如下:

<?php /********************** * 一个简单的目录递归函数 * 第一种实现办法:用dir返回对象 ***********************/
function tree($directory) { $mydir = dir($directory); echo "<ul>\n"; while ($file = $mydir->read()) { if ((is_dir("$directory/$file")) AND ($file != ".") AND ($file != "..")) { echo "<li><font color=\"#ff00cc\"><b>$file</b></font></li>\n"; tree("$directory/$file"); } else
            echo "<li>$file</li>\n"; } echo "</ul>\n"; $mydir->close(); } //开始运行
echo "<h2>目录为粉红色</h2><br>\n"; tree("./nowamagic"); /*********************** * 第二种实现办法:用readdir()函数 ************************/
function listDir($dir) { if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ((is_dir($dir . "/" . $file)) && $file != "." && $file != "..") { echo "<b><font color='red'>文件名:</font></b>", $file, "<br><hr>"; listDir($dir . "/" . $file . "/"); } else { if ($file != "." && $file != "..") { echo $file . "<br>"; } } } closedir($dh); } } } //开始运行
listDir("./nowamagic"); ?>

 

二:获取文件夹大小

获取文件夹大小的函数代码如下:

function getDirSize($dir) { $size = 0; $handle = opendir($dir); while (($folderOrFile = readdir($handle)) != false) { if ($folderOrFile != '.' && $folderOrFile != '..') { if (is_dir($folderOrFile)) { /** * 注释:这里递归时,第一层的 $size不受第二层的同名变量 $size 的影响. * getDirSize("$dir/$file") 实际就是一个数字,加到上一层的 $size 变量中. */
                $size += getDirSize("$dir/$folderOrFile"); } else { $size += filesize("$dir/$folderOrFile"); } } } closedir($handle); return $size; }