php 遍历文件夹下的所有文件及文件夹 (如何遍历php文件夹下的所有文件及文件夹?)

在 PHP 中,我们经常需要对目录中的文件和子目录进行操作,例如列出文件名,复制,移动和删除文件,创建新目录和文件等。这时候,遍历指定目录下所有文件及子目录就变得十分重要。

下面介绍几种遍历文件夹下文件及文件夹的方法。

使用 PHP 自带函数 opendir(), readdir() 和 closedir()

这是遍历文件夹的最基本方法。首先使用 opendir() 函数打开指定目录,该函数返回目录的句柄,然后使用 readdir() 函数读取目录中的条目,最后使用 closedir() 函数关闭目录句柄。可以使用一个循环来读取所有条目并对它们执行需要的操作。

示例代码如下:

php
$dir = "./php"; // 指定较目录
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename:" . $file . "<br>";
}
closedir($dh);
}
}

需要注意的是,readdir() 函数在循环中每次循环结果不同,因此需要使用!==来比较,判断是否为 false,否则会出现死循环。

使用递归函数

有时候,我们需要遍历子目录下的所有文件和子目录,这时候可以创建一个递归函数来实现遍历。递归函数的基本思路是,如果当前路径指向的是目录,则继续遍历该目录中的所有文件和子目录,否则直接处理文件。

示例代码如下:

php
function recursiveScanDir($dir) {
if (!is_dir($dir)) {
echo "不是一个目录";
return false;
}
$files = scandir($dir);
foreach ($files as $file) {
if ($file == '.' || $file == '..') {
continue;
}
$fullpath = $dir . '/' . $file;
if (is_dir($fullpath)) {
recursiveScanDir($fullpath);
echo "目录:" . $fullpath . "<br>";
} else {
echo "文件:" . $fullpath . "<br>";
}
}
}
$dir = "./php"; // 指定较目录
recursiveScanDir($dir);

首先判断指定路径是否是一个目录,如果不是,则直接返回 false;如果是目录,则使用 scandir() 函数获取目录中所有文件和子目录的列表。然后循环遍历该列表中的每个文件和子目录,直接处理文件,如果是子目录,则递归调用当前函数,直到遍历到所有子目录。

使用 SPL(Standard PHP Library)库中的 DirectoryIterator

SPL(Standard PHP Library)是 PHP 自带的库,提供了许多有用的功能,例如 mysqli(MySQL 面向对象驱动程序),PDO(PHP 数据库对象)和 SPL 等。SPL中的 DirectoryIterator 类提供了一个简单但功能强大的遍历文件和目录的方法。

示例代码如下:

php
$dir = './php';
$dirIterator = new DirectoryIterator($dir);
foreach ($dirIterator as $fileInfo) {
if (!$fileInfo->isDot()) {
if ($fileInfo->isDir()) {
echo "目录:" . $fileInfo->getFilename() . "<br>";
} else {
echo "文件:" . $fileInfo->getFilename() . "<br>";
}
}
}

DirectoryIterator 类的一个实例是由一个目录路径初始化,它提供了访问文件名,扩展名,目录和文件类型等信息的方法。在遍历时,首先判断当前文件是否为点(.)或双点(..),然后使用 isDir() 方法判断当前文件是否为目录。

以上就是在 PHP 中遍历文件夹下所有文件及文件夹的三种方法。通过学习这些方法,我们可以轻松地处理目录中的文件和子目录,以满足我们的需求。

如有侵犯您的权益请邮件发送:rainpro@foxmail.com,站长看到会第一时间处理
客栈猫 » php 遍历文件夹下的所有文件及文件夹 (如何遍历php文件夹下的所有文件及文件夹?)

提供最优质的资源集合

立即查看 了解详情