天天看点

PHP 目录和遍历目录函数

目录和遍历目录函数

以下函数都是基于目录(文件夹)操作的函数

mkdir() 建立新目录

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

权限模式:在linux下生效, 目录的权限。该参数对于win是忽略的。

如果创建的目录的上级目录不存在, 是否递归创建, 使用第三个参数递归创建(true);

linux系统下 mkdir 递归创建目录兼容性不好;

编写自定义函数: Linux系统下递归创建目录

function Directory( $dir ){
    return is_dir ( $dir ) or Directory(dirname( $dir )) and mkdir ( $dir , 0777);
}           

rmdir() 删除目录

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

尝试删除 dirname 所指定的目录。 该目录必须是空的, 而且要有相应的权限。 失败时会产生一个 E_WARNING 级别的错误。

遍历目录函数

opendir() — 打开目录句柄

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

打开一个目录句柄, 可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。

readdir() — 从目录句柄中读取条目

string readdir ( resource $dir_handle )           

返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

closedir() — 关闭目录句柄

void closedir ( resource $dir_handle )           

关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。

rewinddir() 倒回目录句柄

void rewinddir ( resource $dir_handle )           

将 dir_handle 指定的目录流重置到目录的开头。

<?php
$dir = "/etc/php5/";
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}
?>           

简单方式读取目录结构

scandir — 列出指定路径中的文件和目录

array scandir ( string $directory [, int $sorting_order [, resource $context ]] )           

返回一个 array ,包含有 directory 中的文件和目录。

directory:要被浏览的目录

sorting_order:默认的排序顺序是按字母升序排列(默认是0,升序)。如果使用了可选参数 sorting_order(0设为 1), 则排序顺序是按字母降序排列。

context:context参数的说明见手册中的 Streams API 一章。

返回值:成功则返回包含有文件名的array,如果失败则返回 FALSE 。如果 directory不是个目录, 则返回布尔值 FALSE 并生成一条 E_WARNING 级的错误。

<?php
$dir = '/tmp' ;
$files1 = scandir ( $dir );
$files2 = scandir ( $dir , 1 );

print_r ( $files1 );
print_r ( $files2 );
?>           

以上例程的输出类似于:

Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)           

删除目录 rmdir()

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

尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。 失败时会产生一个 E_WARNING 级别的错误。

dirname:目录的路径。

context:Note: 在 PHP 5.0.0 中增加了对上下文(Context)的支持。有关上下文(Context)的说明参见 Streams。

<?php
if (! is_dir ( 'examples' )) {
mkdir ( 'examples' );
}

rmdir ( 'examples' );
?>