Home  >  Article  >  Backend Development  >  这个程序为什么不能遍历文件夹下的所有文件和文件夹?

这个程序为什么不能遍历文件夹下的所有文件和文件夹?

WBOY
WBOYOriginal
2016-06-23 14:03:57902browse

下面是一个计算文件夹下面所有文件及文件夹大小的程序,我让它计算文件夹‘znb1’的大小,此文件夹下面
的结构为
znb1/.buildpath,
znb1/.project,
znb1/223/s.php,
znb1/settings/newfile.php,
znb1/settings/org.eclipse.php.core.prefs
程序运行后只计算出znb1/.buildpath和znb1/.project两个文件的大小
这是为什么?我用的软件为wampserver和editplus程序如下:


function dirsize($dirname) {
$dir = opendir ( $dirname );
while ( ($file = readdir ( $dir )) !== FALSE ) {
$filename=$dirname.'\\'.$file;
if ($file != '.' && $file != '..') {

if (is_dir ( $file )) {

$count += dirsize ( $file );
} else {
$count += filesize($filename);
}
}
}
return $count;
}
echo dirsize ( 'znb1' );

?>


回复讨论(解决方案)

if (is_dir ( $filename )) {
如果是$file,那么对于这个相对路径,将在当前目录下寻找。未找到自然报false

必须带上路径!
if (is_dir (  $filename )) {
  $count += dirsize (  $filename );

set_time_limit(0);
function dirsize($dirname) {
if (is_dir($dirname)) {
$dir = opendir ($dirname);
if ($dir != false) {
while ( ($file = readdir ($dir)) !== FALSE ) {
$filename = $dirname.'\\'.$file;
if (is_file($filename)){
$count[] = filesize($filename)."@".$filename;
} else if (is_dir($filename)){
if ($file != "." && $file != "..") {
dirsize($filename);
}
}
}
}

return $count;
} else {
return false;
}
}
$path = "D:\APMServ5.2.6\www\htdocs\localhost";
$c = dirsize($path);
var_dump($c);
+-----------------------------------------------------------------+
修改了一下,可以计算了,相对路劲没测试过!参考下吧!

给你一个我写的遍历文件夹的函数

你可以参考一下: http://www.bacysoft.cn/thread-77-1-1.html

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn