用到的系统函数有:opendir(),readdir(),closedir()。
opendir():
resource opendir ( string $path [, resource $context ] ) //path 要打开的目录路径 //context context 参数的说明见手册中的 Streams API 一章。
打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
Example #1 opendir() 例子
<?php $dir = "/etc/php5/"; // Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; } closedir($dh); } } ?>
readdir():
resource opendir ( string $path [, resource $context ] ) //dir_handle 目录句柄的 resource,之前由 opendir() 打开
返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
Example #1 列出目录中的所有文件
<?php // 注意在 4.0.0-RC2 之前不存在 !== 运算符 if ($handle = opendir('/path/to/files')) { echo "Directory handle: $handle\n"; echo "Files:\n"; /* 这是正确地遍历目录方法 */ while (false !== ($file = readdir($handle))) { echo "$file\n"; } /* 这是错误地遍历目录的方法 */ while ($file = readdir($handle)) { echo "$file\n"; } closedir($handle); } ?>
Example #2 列出当前目录的所有文件并去掉 . 和 ..
<?php if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo "$file\n"; } } closedir($handle); } ?>
closedir():
void closedir ( resource $dir_handle ) //dir_handle 目录句柄的 resource,之前由 opendir() 所打开的。
关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。
Example #1 closedir() 例子
<?php $dir = "/etc/php5/"; // Open a known directory, read directory into variable and then close if (is_dir($dir)) { if ($dh = opendir($dir)) { $directory = readdir($dh); closedir($dh); } } ?>
代码部分:
<?php /** * 获取目录以及文件 date : 2012-10-08 */ function get_file($path){ $current_dir = opendir($path); //openfile()返回一个目录句柄,失败则false while (($file = readdir($current_dir)) !==false){ //readdir()返回打开目录句柄中的一个条目 $sub_dir = $path . DS . $file; //形成子目录形式 if($file == '.' || $file == '..'){ continue; }else if(is_dir($sub_dir)){ //如果是有效子目录则递归调用 echo 'directory '.$file; echo "<br>"; get_file($path); //调用自身 closedir($current_dir);// }else{ echo 'file in directory '. $path. ':' .$file; } } } ?>
实例:
<?php get_file('./11'); ?>