学科分类
目录
PHP基础

文件夹操作

为了便于搜索和管理计算机中的文件,文件都是分目录进行存储的。为此,PHP提供了相应的函数来操作文件夹,例如,创建文件夹、删除文件夹、遍历文件夹等。下面进行详细讲解。

1. 创建文件夹

在PHP中,mkdir()函数用于创建文件夹,其声明方式如下。

bool mkdir( string $pathname [, int $mode = 0777[, bool $recursive = false[, resource $context ]]] )

在上述语法格式中,$pathname表示要创建的目录地址,地址的格式可以是绝对路径也可以是相对路径;$mode指定目录的访问权限(用于Linux环境),默认为0777;$recursive指定是否递归创建目录,默认为false。该函数执行成功返回true,失败返回false。

下面通过代码演示mkdir()函数的使用。

mkdir('upload');

上述代码执行完成后,会在当前目录下创建一个名为upload的文件夹。需要注意的是,如果文件夹已经存在,则会创建失败,并提示Warning错误。为了不影响程序继续执行,可以使用file_exists()函数先判断文件夹是否存在,再进行创建,示例代码如下。

   if (!file_exists('upload')) {
     mkdir('upload');
   }

2. 删除文件夹

在PHP中,rmdir()函数用于删除文件夹,其声明方式如下。

bool rmdir( string $dirname [, resource $context ] )

上述语法格式中,$dirname指定要删除的目录名。函数执行成功时返回true,失败返回false。

下面通过代码演示rmdir()函数的使用。

rmdir('upload');

如果要删除的文件夹不存在,会删除失败,并提示Warning错误。需要注意的是,对于非空目录,使用rmdir()进行删除时,同样也会删除失败并提示Warning错误。因此,对于非空目录,只有先清空里面的文件,才能够删除目录。

3. 重命名

在PHP中,rename()函数用于实现文件夹或文件的重命名,其声明方式如下。

bool rename( string $oldname , string $newname[, resource $context ] )

上述语法格式中,$oldname表示要重命名的文件夹,$newname表示新的文件夹名称。函数执行成功时返回true,失败返回false。

例如,创建upload文件夹,并将该文件夹重命名为uploads,具体代码如下。

   mkdir('upload');
   rename('upload', 'uploads');

上述代码实现了文件夹的重命名。

4. 读取文件夹

读取文件夹就是读取文件夹中的文件列表。PHP提供了两种方式读取文件夹,一种是使用scandir()函数获取文件夹下的所有文件名;另外一种方式是使用opendir()函数获取资源,然后使用readdir()函数进行访问。

scandir()函数用于返回指定目录中的文件和目录的数组,其声明方式如下。

bool scandir( string $directory [, int $order, resource $context ] )

上述语法格式中,$directory表示要查看的目录,$order规定排列排序,默认是0,表示按字母升序排列。

例如,查看当前目录下的所有内容,具体代码如下。

   $dir_info = scandir('./');
   foreach ($dir_info as $file) {
     echo $file . '<br>';
   }

在上述代码中,“./”表示当前目录,运行上述代码,输出结果为当前目录下的所有内容,并按文件名首字母升序排序。

opendir()函数用于打开一个目录句柄,其声明方式如下。

resource opendir( string $path [, resource $context ] )

上述语法格式中,$path表示要打开的目录路径,函数执行成功时返回目录句柄的resource,失败返回false。

readdir()函数从目录句柄中读取条目,其声明方式如下。

resource readir( [ resource $dir_handle ] )

上述语法格式中,$dir_handle表示已经打开的目录句柄资源,函数执行成功时返回文件名称,失败返回false。

下面演示使用opendir()函数和readdir()函数读取文件夹中的内容,具体代码如下。

   $resource = opendir('./');
   $file = '';
   while ($file = readdir($resource)) {
     echo $file . '<br>';
   }
   closedir($resource);

在上述代码中,使用opendir()函数打开当前目录的资源,使用readdir()函数获取资源中的文件。需要注意的是,打开一个资源后,建议使用closedir()函数关闭资源。

文件夹的操作通常具有不确定性。例如,程序不知道要操作的文件夹是否存在,以及要操作的目录是否是文件夹。为了保证代码的严谨性,减少代码执行过程中出现错误,通常会使用系统函数来判断路径的有效性,具体函数如表1所示。

表1 文件夹操作常用判断函数

函数名 功能
bool is_dir( string $filename ) 判断给定的文件名是否是一个目录
getcwd() 成功返回当前目录,失败返回false
rewinddir( resource $dir_handle ) 将打开的资源指针重置到目录的开头
bool chdir(string $directory) 改变当前的目录,成功返回true,失败返回false

表1中,列举了操作文件夹时常用的判断函数,PHP提供了很多操作文件夹的函数,这里只讲解了其中常用的部分函数,读者可以通过查看PHP手册,根据自己所要实现的功能进行学习。

点击此处
隐藏目录