php中目录操作opendir()、readdir()及scandir()用法示例

opendir(path,context)若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 “@” 来隐藏 error 的输出。

readdir() 函数返回由 opendir() 打开的目录句柄中的条目。若成功,则该函数返回一个文件名,否则返回 false。

scandir() 函数返回一个数组,其中包含指定路径中的文件和目录。
若成功,则返回一个数组,若失败,则返回 false。如果 directory 不是目录,则返回布尔值 false

付上2段搜到的读取目录的代码,亲测有效

显示目录中文件名

?
1
2
3
4
5
6
7
8
9
// 打开目录,然后读取其内容
if ( is_dir ( $dir )){
  if ( $dh = opendir( $dir )){
   while (( $file = readdir( $dh )) !== false){
    echo "filename:" . $file . "<br>" ;
   }
   closedir ( $dh );
  }
}

拷贝一个目录的文件到另一个目录

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
copy_dir( $from_dir , $to_dir );
function copy_dir( $from_dir , $to_dir ){
   if (! is_dir ( $from_dir )){
     return false;
   }
   echo "\r\n from:" , $from_dir , '---to' , $to_dir ;
   $from_files = scandir( $from_dir );
   //如果不存在目标目录,则尝试创建
   if (! file_exists ( $to_dir )){
     @ mkdir ( $to_dir );
   }
   if (! empty ( $from_files )){
     foreach ( $from_files as $file ){
       if ( $file == '.' || $file == '..' ){
         continue ;
       }
       if ( is_dir ( $from_dir . '/' . $file )){ //如果是目录,则调用自身
         copy_dir( $from_dir . '/' . $file , $to_dir . '/' . $file );
       } else { //直接copy到目标文件夹
         copy ( $from_dir . '/' . $file , $to_dir . '/' . $file );
       }
     }
   }
}

猜你喜欢

转载自www.cnblogs.com/tomtanof/p/10995568.html