php遍历文件夹和文件列表示例分享

接下来我将详细讲解如何使用PHP遍历文件夹和文件列表,并且提供两个示例说明。具体步骤如下:

接下来我将详细讲解如何使用PHP遍历文件夹和文件列表,并且提供两个示例说明。具体步骤如下:

1. 打开目录

首先,我们需要打开需要遍历的目录。可以使用opendir()函数实现,如下所示:

$dir = 'path/to/folder'; // 需要遍历的目录
$handle = opendir($dir); // 打开目录

2. 遍历目录

接下来我们需要遍历该目录,并将其中的文件和子目录取到。可以使用readdir()函数进行实现,如下所示:

while (false !== ($entry = readdir($handle))) {
    // 处理每个条目
}

上述代码将遍历每个目录项(子目录和文件),一次处理一个条目。注意,readdir()函数会将当前和上一个目录作为特殊条目处理,所以你需要将这些忽略。这里可以使用in_array()函数过滤掉即可。

3. 处理文件夹

对于遇到的每个文件夹,我们需要打开并遍历所有的子目录和文件。可以使用递归的方法,实现如下:

function listFolderFiles($dir){
    $ffs = scandir($dir);
    unset($ffs[array_search('.', $ffs, true)]);
    unset($ffs[array_search('..', $ffs, true)]);
    //如果没有文件和目录
    if (count($ffs) < 1){
        return;
    }
    foreach($ffs as $ff){
        echo "<li>".$ff;
        if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
        echo "</li>";
    }
}

上面的函数遍历了给定目录的所有文件和子目录,并输出一个HTML列表显示,不断递归调用自身以遍历所有的文件夹和文件。可以通过修改输出格式,如改为输出数组来使其返回文件列表

示例一:获取指定文件夹下所有文件

$list = array(); // 初始化文件列表
$dir = 'path/to/folder'; // 需要遍历的目录
$handle = opendir($dir); // 打开目录

// 遍历目录取到文件列表
while (false !== ($entry = readdir($handle))) {
    // 忽略.和..目录
    if ($entry == '.' || $entry == '..') {
        continue;
    }
    // 判断是否为文件
    if (is_file($dir . '/' . $entry)) {
        // 将文件名添加到列表中
        $list[] = $entry;
    }
}

// 关闭目录
closedir($handle);

print_r($list); // 输出文件列表

上述代码将遍历指定目录下的所有文件,并将文件名存储到数组中。

示例二:获取指定文件夹下所有子目录和文件

function listFolderFiles($dir){
    $ffs = scandir($dir);
    unset($ffs[array_search('.', $ffs, true)]);
    unset($ffs[array_search('..', $ffs, true)]);
    //如果没有文件和目录
    if (count($ffs) < 1){
        return;
    }
    foreach($ffs as $ff){
        echo "<li>".$ff;
        if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
        echo "</li>";
    }
}

$dir = 'path/to/folder'; // 需要遍历的目录
echo "<ul>";
listFolderFiles($dir);
echo "</ul>";

上述代码将遍历指定目录下的所有子目录和文件,并输出为一个递归的HTML列表。

本文标题为:php遍历文件夹和文件列表示例分享

基础教程推荐