PHP目录操作常用函数汇总(附带实例)
为了便于搜索和管理计算机中的文件,一般都将文件分目录存储。PHP 提供了相应的函数来操作目录,例如,创建目录、重命名目录、读取目录、删除目录等。
下面演示 mkdir() 函数的使用方法:
需要注意的是,如果要创建的目录已经存在,则会创建失败,并出现警告。为了不影响程序继续运行,可以使用 file_exists() 函数先判断目录是否存在,再进行创建,示例代码如下:
将 upload 目录重命名为 uploads 的示例代码如下:
scandir() 函数的语法格式如下:
查看当前目录下的所有内容的示例代码如下:
readdir() 函数从目录句柄中读取条目。该函数执行成功返回文件名称,执行失败返回 false。其语法格式如下:
演示使用 opendir() 函数和 readdir() 函数读取目录中的内容的示例代码如下:
目录的操作通常具有不确定性。例如,程序不知道要操作的目录是否存在,以及要操作的是不是目录。为了保证代码的严谨性,减少代码执行过程中出现的错误,通常会使用系统函数来判断路径的有效性。
目录操作常用的判断函数如下表所示:
下面演示 rmdir() 函数的使用方法,示例代码如下:
PHP创建目录
在 PHP 中,mkdir() 函数用于创建目录。该函数执行成功返回 true,执行失败返回 false。其语法格式如下:bool mkdir( string $pathname[, int $mode = 0777[, bool $recursive = false[, resource $context ]]] )
- $pathname 表示要创建的目录地址,地址的格式可以是绝对路径也可以是相对路径;
- $mode 用于指定目录的访问权限(用于 Linux 环境),默认为 0777;
- $recursive 指定是否递归创建目录,默认为 false。
下面演示 mkdir() 函数的使用方法:
mkdir('upload');执行上述代码后,会在当前目录下创建一个名为 upload 的目录。
需要注意的是,如果要创建的目录已经存在,则会创建失败,并出现警告。为了不影响程序继续运行,可以使用 file_exists() 函数先判断目录是否存在,再进行创建,示例代码如下:
if (!file_exists('upload')) { mkdir('upload'); }
PHP重命名目录
在 PHP 中,rename() 函数用于实现目录或文件的重命名。该函数执行成功返回 true,执行失败返回 false。其语法格式如下:bool rename( string $oldname, string $newname[, resource $context ] )$oldname 表示要重命名的目录,$newname 表示新的目录名称。
将 upload 目录重命名为 uploads 的示例代码如下:
rename('upload', 'uploads');上述代码实现了将 upload 目录重命名为 uploads。
PHP读取目录
读取目录是指读取目录中的文件列表。PHP 提供了两种方式读取目录:- 使用 scandir() 函数获取目录下的所有文件名;
- 使用 opendir() 函数获取资源类型的目录句柄,然后使用 readdir() 函数进行访问。
1) PHP scandir()获取目录下所有文件名
scandir() 函数用于返回指定目录中的文件和目录。该函数执行成功返回包含所有文件名的数组,执行失败返回 false。scandir() 函数的语法格式如下:
bool scandir( string $directory[, int $order, resource $context ] )$directory 表示要查看的目录;$order 规定排序方式,默认是 0,表示按字母升序排列。
查看当前目录下的所有内容的示例代码如下:
$dir_info = scandir('./'); foreach ($dir_info as $file) { echo $file . '<br>'; }在上述示例代码中,“./”表示当前目录。运行上述代码后,会输出当前目录下的所有内容,并按文件名首字母升序排列。
2) PHP readdir()函数读取目录
opendir() 函数用于打开一个目录句柄。该函数执行成功返回目录的句柄,执行失败返回 false。其语法格式如下:resource opendir( string $path[, resource $context ] )$path 表示要打开的目录路径。
readdir() 函数从目录句柄中读取条目。该函数执行成功返回文件名称,执行失败返回 false。其语法格式如下:
resource readdir( [ resource $dir_handle ] )$dir_handle 表示已经打开的目录句柄。
演示使用 opendir() 函数和 readdir() 函数读取目录中的内容的示例代码如下:
$resource = opendir('./'); $file = ''; while ($file = readdir($resource)) { echo $file . '<br>'; } closedir($resource);在上述示例代码中,使用 opendir() 函数打开当前目录句柄,使用 readdir() 函数获取目录中的文件。需要注意的是,打开一个目录句柄后,使用完毕时,建议使用 closedir() 函数关闭目录句柄。
目录的操作通常具有不确定性。例如,程序不知道要操作的目录是否存在,以及要操作的是不是目录。为了保证代码的严谨性,减少代码执行过程中出现的错误,通常会使用系统函数来判断路径的有效性。
目录操作常用的判断函数如下表所示:
函数 | 功能 |
---|---|
is_dir(string $filename) | 判断给定的名称是不是目录,是目录会返回 true,不是目录则返回 false |
getcwd() | 若成功会返回当前目录,失败则返回 false |
rewinddir(resource $dir_handle) | 将打开的目录句柄指针重置到目录的开头 |
chdir(string $directory) | 改变当前的目录,若成功会返回 true,失败则返回 false |
PHP删除目录
在 PHP 中,rmdir() 函数用于删除目录。该函数执行成功返回 true,执行失败返回 false。其语法格式如下:bool rmdir( string $dirname[, resource $context ] )$dirname 是要删除的目录名。
下面演示 rmdir() 函数的使用方法,示例代码如下:
rmdir('uploads');如果要删除的目录不存在,会删除失败,并出现警告。同样,如果要删除的目录是非空目录,也会删除失败,并出现警告。因此,删除非空目录时,只有先清空目录中的文件,才能够删除相应目录。