目录也是文件,是一种特殊的文件。要浏览目录下的文件,首先也要打开目录,浏览完毕后,同样要关闭目录。就这点说,两者没有什么分别,都要经过3步,即打开目录、浏览目录和关闭目录。
打开目录
打开目录和打开文件类似,但打开的文件如果不存在,在自动创建一个新文件;而打开的目录如果不正确,则一定会报错。
在PHP中使用opendir()函数打开目录。语法如下:
resource opendir(string path)
参数path是一个合法的目录零,成功执行后返回目录的指针;如果path不是有个合法的目录或者因为权限、文件系统错误而不能打开目录,opendir()函数将返回false,并产生一个E_WARNING级别的错误信息。可以在opendir()前面加上个"@"符号来抑制错误信息的输出。
浏览目录
在PHP中浏览目录中的文件使用的是scandir()函数。语法如下:
array scandir(string directory[,int sorting_order])
该函数返回一个数组,包含directory中的所有文件和目录。参数sorting_order指定排列顺序,默认按字母升序排列,如果应用参数sorting_order,则变为降序排列。
例如:
浏览根目录下的所有文件
$path="../test"; if( is_dir($path) ) { $dir=scandir($path); foreach ($dir as $value) { echo $value."<br>"; } }else{ echo "目录路径错误"; }
运行结果为:
.
..
.idea
15-test
CSDN
count.txt
index1.php
num
phpyudingyichangliang.php
test.js
test.php
test.txt
upfile
操作目录
因为目录是特殊的文件,所以对文件的操作处理函数(如重命名等)一般也试用与目录。PHP也为目录本身提供了一些特殊的操作函数。
下表列出了一些常用的目录操作函数:
函数原型 |
函数说明 |
举例 |
bool mkdir(string pathname) |
新建一个指定的目录 |
mkdir("temp") |
bool rmdir(string dirname) |
删除所指定的目录,该目录必须是空的 |
rmdir("temp") |
string getcwd(void) |
获取当前工作的目录 |
getcwd() |
bool chdir(string directory) |
改变当前目录为diretory |
echo getcwd().‘<br>‘; chdir(‘../‘); echo getcwd().‘<br>‘; |
float disk_free_space(string directory) |
返回目录中可用空间(bytes)。 被检查的文件必须通过服务器的文件系统。 |
disk_free_space(‘D:\\wampserver‘); |
float disk_total_space(string directory) |
返回目录的总空间大小(bytes) |
disk_total_space(‘D:\\wampserver‘); |
string readdir(resource handle) |
返回目录中下一个文件的文件名(使用此函数时,目录必须是使用opendir()函数打开的)在PHP5之前,都是使用这个函数来浏览目录的 |
while(false!==($path==readdir($handle))){ echo $pah; } |
void rewinddir(resource handle) |
将指定的目录重新指到目录的开头 |
rewinddir($handle) |
关闭目录
PHP中通过closedir()函数关闭目录。语法如下
void closedir(resource handle)
参数handle为使用opendir()函数打开的一个目录所返回的目录指针
例如,下面是一个打开和关闭目录的流程代码:
$path="../"; if(is_dir($path)){ if($dire=opendir($path)) echo $dire; }else{ echo "路径错误"; exit(); } //.... //其他操作 closedir($dire);
运行结果为:
Resource id #2
注:is_dir()函数用于判断当前路径是否是一个合法的目录。如果合法,返回true,否则返回false。