文件夹操作
为了便于搜索和管理计算机中的文件,文件都是分目录进行存储的。为此,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手册,根据自己所要实现的功能进行学习。