在PHP中,目录遍历是一个常见的任务,可以用来列出目录中的所有文件和子目录,以及获取文件的详细信息。以下是一个简单的PHP脚本示例,它将演示如何遍历一个指定目录,并展示每个文件的基本信息。
<?php
// 定义要遍历的目录路径
$directory = "/path/to/your/directory";
// 检查目录是否存在
if (!is_dir($directory)) {
die("指定的目录不存在!");
}
// 获取目录中所有文件和文件夹
$files = scandir($directory);
// 遍历目录中的文件和文件夹
foreach ($files as $file) {
// 跳过点(.)和点点(..)表示当前目录和上级目录
if ($file == "." || $file == "..") {
continue;
}
// 构建完整的文件路径
$filePath = $directory . DIRECTORY_SEPARATOR . $file;
// 检查是文件还是目录
if (is_file($filePath)) {
// 获取文件信息
$fileInfo = pathinfo($filePath);
$fileSize = filesize($filePath);
$fileLastModified = date("Y-m-d H:i:s", filemtime($filePath));
// 打印文件信息
echo "文件: " . $fileInfo['basename'] . "\n";
echo "大小: " . sizeFormat($fileSize) . "\n";
echo "修改时间: " . $fileLastModified . "\n";
echo "-----------------------------\n";
} elseif (is_dir($filePath)) {
// 如果是目录,则递归调用函数
echo "目录: " . $fileInfo['basename'] . "\n";
echo "-----------------------------\n";
echoDirectory($filePath); // 递归调用
}
}
// 辅助函数:格式化文件大小
function sizeFormat($size) {
if ($size < 1024) {
return $size . " 字节";
} elseif ($size < 1024 * 1024) {
return round($size / 1024, 2) . " KB";
} elseif ($size < 1024 * 1024 * 1024) {
return round($size / 1024 / 1024, 2) . " MB";
} else {
return round($size / 1024 / 1024 / 1024, 2) . " GB";
}
}
// 辅助函数:递归遍历目录
function echoDirectory($directory) {
$files = scandir($directory);
foreach ($files as $file) {
if ($file == "." || $file == "..") {
continue;
}
$filePath = $directory . DIRECTORY_SEPARATOR . $file;
if (is_file($filePath)) {
$fileInfo = pathinfo($filePath);
$fileSize = filesize($filePath);
$fileLastModified = date("Y-m-d H:i:s", filemtime($filePath));
echo " 文件: " . $fileInfo['basename'] . "\n";
echo " 大小: " . sizeFormat($fileSize) . "\n";
echo " 修改时间: " . $fileLastModified . "\n";
} elseif (is_dir($filePath)) {
echo " 目录: " . $file . "\n";
echoDirectory($filePath); // 递归调用
}
}
}
?>
这个脚本会列出指定目录下的所有文件和子目录,并且为每个文件显示其大小和最后修改时间。如果遇到子目录,它会递归地进行同样的操作。
使用说明:
- 将上述脚本保存为PHP文件,例如
directory_list.php。 - 修改
$directory变量的值为你想要遍历的目录路径。 - 使用PHP解释器运行该脚本,可以通过命令行或任何支持PHP的服务器环境。
注意:在处理目录遍历时,始终要确保你有权访问目标目录,并且脚本中不应该包含敏感数据,以防止潜在的权限问题和数据泄露。
