用到的系统函数有: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');
?>