在本教程中,我们将学习如何使用各种PHP函数来处理目录。
PHP提供了一组方便的函数使得可以像处理文件一样处理目录。通过一个目录句柄操作一个目录,该句柄是一个指向目录的特殊变量。
要获得目录句柄,需要将目录路径传递给opendir()函数,如下所示:
<?php
$dh
= opendir(
'./backup'
);
如果打开目录时出错,opendir()函数将返回false。目录处理完成后,记得使用closedir()函数关闭目录句柄:
closedir
(
每个目录可能包含一列文件或子目录,每一条记录称为entry。其中点号.表示当前目录两个点..表示父目录。
.
..
要获取目录中的下一个entry(文件或目录),需要将目录句柄传递给readdir()函数。
下面的示例向您展示了如何列出备份目录中的所有文件:
if
){
echo
'<ul>'
;
while
$e
= readdir(
)){
!=
'.'
&&
'..'
// 排除当前目录和父目录
'<li>'
'</li>'
}
'</ul>'
默认的当前目录是正在运行的脚本文件的目录。当前目录很重要,因为它被用作相对文件路径的比对目录。
可以使用getcwd()函数获得当前目录。
getcwd
();
要将当前目录更改为新目录,可以使用chdir()函数:
chdir
调用chdir()函数后,当前目录将更改为新目录。我们可以通过调用getcwd()函数来验证它。
要创建目录,可以使用mkdir()函数。只需将要创建的目录的路径传递给mkdir()函数。如果mkdir()函数成功创建了目录,则返回true,否则返回false。
$dir
=
'./theitroad/2017'
$r
mkdir
sprintf(
"%s 目录创建成功。"
,
else
{
" 创建目录 %s 时出错"
请注意,创建目录时,父目录必须存在。
默认情况下,mkdir()函数为新目录设置的权限为0777。如果希望设置不同的权限,可以将其传递给mkdir()函数或使用chmod()函数。
,0644);
要删除目录,可以使用rmdir()函数。必须具有足够的权限才能删除目录。此外,目录必须为空,就是说它不包含任何文件或子目录。
以下示例将删除/bak/2016目录:
rmdir
'./bak/2016'
要从文件路径获取目录路径,可以使用dirname()函数,如下所示:
dirname(
'./bak/test.txt'
// ./bak
PHP把目录和文件都当作文件进行处理。但是目录是一种特殊的文件。要测试一个文件是一个普通的文件还是目录,可以使用一对方便的函数:
让我们看下面的例子:
$path
is_dir
'%s 是一个目录'
is_file
'%s 是一个文件'
'%s 既不是文件也不是目录'
下面的示例演示如何递归地列出目录及其子目录中的所有文件。
脚本流程如下:
'./bak'
traverse_dir(
function
display_files(
$files
) {
"<h2>%s</h2>"
count
) > 0) {
foreach
as
$file
"<li>%s</li>"
array
$dirs
)) {
// 检查它是否是一个目录
$f
'/'
[] =
// 显示当前目录及其中的文件
// 递归遍历子目录
原文链接:https://codingdict.com/