在PHP中,我们可以使用内置的目录和文件函数来遍历文件夹下的所有文件和子文件夹。下面的函数可以实现这个功能:

function listFiles($dir){
    // 检查目录是否存在
    if(!is_dir($dir)){
        die("目录 $dir 不存在");
    }

    // 打开目录
    if($handle = opendir($dir)){
        // 读取目录中的每个文件
        while(($file = readdir($handle)) !== false){
            // 忽略 '.' 和 '..' 两个特殊的目录
            if($file != '.' && $file != '..'){
                // 检查文件是否是目录
                if(is_dir($dir . '/' . $file)){
                    // 如果是目录,递归调用函数
                    listFiles($dir . '/' . $file);
                }else{
                    // 如果是文件,打印文件名
                    echo $dir . '/' . $file . "\n";
                }
            }
        }
        // 关闭目录
        closedir($handle);
    }
}

这个函数首先检查给定的目录是否存在,如果不存在,函数会打印错误信息并退出。如果目录存在,函数会打开这个目录并读取其中的每个文件。如果读取的文件是 '.' 或 '..',函数会忽略这两个特殊的目录。如果读取的文件是一个目录,函数会递归调用自身来遍历这个子目录。如果读取的文件是一个文件,函数会打印这个文件的路径。最后,函数会关闭打开的目录。

这个函数的优点是它可以遍历任意深度的目录结构,因为它使用了递归。它的缺点是它会打开和关闭目录很多次,这可能会消耗很多资源。如果你需要遍历的目录结构很深,或者目录中包含很多文件,你可能需要优化这个函数,例如,使用一个栈或队列来避免递归。

这个函数是一个很基础的文件和目录遍历函数,你可以根据你的需要来修改和扩展它。例如,你可以添加一个参数来指定一个回调函数,这个回调函数会在函数找到一个文件时被调用。你也可以添加一个参数来指定一个文件名或文件类型的过滤器,这个过滤器可以用来只遍历特定的文件。

云服务器/高防CDN推荐

蓝易云国内/海外高防云服务器推荐


海外免备案云服务器链接:www.tsyvps.com

蓝易云安全企业级高防CDN:www.tsycdn.com

持有增值电信营业许可证:B1-20222080【资质齐全】

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2024 年 01 月 06 日
如果觉得我的文章对你有用,请随意赞赏