Directory 函数允许您获得关于目录及其内容的信息。这些函数提供了操作文件系统目录的能力,包括:
PHP Directory 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。
| 函数 | 描述 | 版本 |
|---|---|---|
| chdir() | 改变当前的目录。 | PHP 4+ |
| chroot() | 改变根目录。 | PHP 4+ |
| closedir() | 关闭目录句柄。 | PHP 4+ |
| dir() | 返回 Directory 类的实例。 | PHP 4+ |
| getcwd() | 返回当前工作目录。 | PHP 4+ |
| opendir() | 打开目录句柄。 | PHP 4+ |
| readdir() | 返回目录句柄中的条目。 | PHP 4+ |
| rewinddir() | 重置目录句柄。 | PHP 4+ |
| scandir() | 返回指定目录中的文件和目录的数组。 | PHP 5+ |
| dirname() | 返回路径中的目录部分。 | PHP 4+ |
| basename() | 返回路径中的文件名部分。 | PHP 4+ |
| pathinfo() | 返回文件路径的信息。 | PHP 4+ |
| is_dir() | 判断文件名是否是一个目录。 | PHP 4+ |
| mkdir() | 新建目录。 | PHP 4+ |
| rmdir() | 删除目录。 | PHP 4+ |
// 获取当前工作目录
$current_dir = getcwd();
echo "当前目录: " . $current_dir . "\n";
// 改变目录
chdir('../');
echo "新目录: " . getcwd() . "\n";
// 返回原目录
chdir($current_dir);
// 打开目录
$dir = opendir('.');
// 读取目录内容
echo "目录内容:\n";
while (($file = readdir($dir)) !== false) {
if ($file != "." && $file != "..") {
echo $file . "\n";
}
}
// 重置目录指针
rewinddir($dir);
// 再次读取
echo "\n重置后重新读取:\n";
while (($file = readdir($dir)) !== false) {
if ($file != "." && $file != "..") {
echo $file . "\n";
}
}
// 关闭目录
closedir($dir);
// 获取目录中的所有文件和目录
$files = scandir('.');
echo "目录中的文件和目录:\n";
foreach ($files as $file) {
if ($file != "." && $file != "..") {
if (is_dir($file)) {
echo "[目录] " . $file . "\n";
} else {
echo "[文件] " . $file . "\n";
}
}
}
// 按修改时间排序
$files = scandir('.', SCANDIR_SORT_DESCENDING);
echo "\n按时间降序排序:\n";
print_r($files);
// 创建 Directory 对象
$d = dir('.');
echo "目录句柄: " . $d->handle . "\n";
echo "目录路径: " . $d->path . "\n";
// 读取目录
echo "\n目录内容:\n";
while (false !== ($entry = $d->read())) {
if ($entry != "." && $entry != "..") {
echo $entry . "\n";
}
}
// 关闭目录
$d->close();
function listDirectory($path, $level = 0) {
if (!is_dir($path)) {
return;
}
$items = scandir($path);
foreach ($items as $item) {
if ($item == '.' || $item == '..') {
continue;
}
$fullPath = $path . DIRECTORY_SEPARATOR . $item;
$indent = str_repeat(' ', $level);
if (is_dir($fullPath)) {
echo $indent . "[目录] " . $item . "\n";
listDirectory($fullPath, $level + 1);
} else {
echo $indent . "[文件] " . $item . "\n";
}
}
}
// 使用示例
echo "递归遍历当前目录:\n";
listDirectory('.');