与老涂一起写代码

遍历文件夹里面的所有文件

admin 145 ℃ 0 条
遍历文件夹里面的所有文件
function scanDirectory($dir) {
    // 打开目录
    $handle = opendir($dir);
    
    // 循环读取目录中的文件或子文件夹
    while (false !== ($file = readdir($handle))) {
        if ($file != '.' && $file != '..') {
            $filePath = $dir . '/' . $file;
            
            // 将文件名转换为正确的字符编码
            $filePath = iconv('GBK', 'UTF-8', $filePath);
            
            // 检查文件是否是文件夹
            if (is_dir($filePath)) {
                // 递归调用自身,扫描子文件夹
                scanDirectory($filePath);
            } else {
                // 处理文件
                echo $filePath . "\n";
            }
        }
    }
    
    // 关闭目录句柄
    closedir($handle);
}

// 设置默认字符编码为UTF-8
mb_internal_encoding('UTF-8');

// 调用函数,并传入要扫描的目录路径
scanDirectory('path/to/directory');

在上面的代码中,我们使用了iconv函数将文件路径转换为正确的字符编码。在示例中,我将输入的文件路径从GBK编码转换为UTF-8编码。你可以根据实际情况进行调整。

另外,我还添加了mb_internal_encoding函数来设置默认字符编码为UTF-8,以确保PHP正确处理中文字符。这样,你就可以在处理文件路径和文件名时正确地处理中文字符。

scanDirectory函数接受一个目录路径作为参数,并递归地遍历该目录及其子目录中的所有文件。在循环中,readdir函数用于读取目录中的文件和子文件夹。我们通过检查文件名是否为.或..来排除当前目录和上级目录。然后,我们构建文件的完整路径,并使用is_dir函数检查它是否是一个文件夹。如果是文件夹,我们递归地调用scanDirectory函数来扫描子文件夹。如果是文件,我们进行相应的处理,这里只是简单地打印文件路径,你可以根据需要进行其他操作。


请记得将 'path/to/directory' 替换为你要遍历的实际目录路径。


发表评论 (已有0条评论)

快来评论,快来抢沙发吧~