php遍历文件夹下的所有文件和子文件夹示例

下面是关于PHP遍历文件夹的攻略。

下面是关于PHP遍历文件夹的攻略。

标准的遍历文件夹代码块

使用PHP的opendir函数打开一个目录,操作完成后使用closedir关闭目录。在处理每一个文件或子目录时,使用PHP内置的递归函数执行相应的操作。

同样需要注意的是,在操作完每个文件或子目录后,要检查其是否为.,..,以及文件是否被隐藏。 普通遍历代码如下:

$dir = './'; //待遍历目录
if (is_dir($dir)) {
  if ($dh = opendir($dir)) {
    while (($filename = readdir($dh)) !== false) {
      if ($filename != '.' && $filename != '..' && !is_hidden($filename)) {
        if (is_dir($dir . '/' . $filename)) {
          // 是目录,递归遍历文件夹
          traverse($dir . '/' . $filename);
        } else {
          // 是文件,进行相应操作
          file_operation($dir . '/' . $filename);
        }
      }
    }
    closedir($dh);
  }
}
/**
* 判断文件是否为隐藏文件
**/
function is_hidden($path) {
  return (strpos($path, '.') === 0);
}

示例1:输出目录下所有文件和子目录的路径

function traverse($dir) {
  $dir_handle = opendir($dir);
  while ($filename = readdir($dir_handle)) {
    if ($filename != '.' && $filename != '..' && !is_hidden($filename)) {
      if (is_dir($dir . '/' . $filename)) {
        // 目录
        echo $dir . '/' . $filename . '<br>';
        traverse($dir . '/' . $filename);
      } else {
        // 文件
        echo $dir . '/' . $filename . '<br>';
      }
    }
  }
  closedir($dir_handle);
}
traverse('./');

示例2:统计目录下所有文件和子目录的总数量

$count = 0;
function traverse($dir) {
  global $count;
  $dir_handle = opendir($dir);
  while ($filename = readdir($dir_handle)) {
    if ($filename != '.' && $filename != '..' && !is_hidden($filename)) {
      if (is_dir($dir . '/' . $filename)) {
        // 目录
        traverse($dir . '/' . $filename);
      } else {
        // 文件
        $count++;
      }
    }
  }
  closedir($dir_handle);
  return $count;
}
echo 'The count of files in the directory is: ' . traverse('./');

希望这些内容对你有所帮助。

本文标题为:php遍历文件夹下的所有文件和子文件夹示例

基础教程推荐