读取文件夹 :
<?php /** * 使用递归遍历读取文件和文件夹 */ header("content-type:text/html;charset=utf-8"); $dirname = "test"; function listdir($dirname){ $ds = opendir($dirname); //创建一个目录资源, 传入的目录就是资源 while($file = readdir($ds)){ //从目录中读取条目 //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹 $path = $dirname."/".$file; //判断,如果是 . 或者 ..的目录就过滤掉 if($file != "." && $file != ".."){ if(is_dir($path)){ //判断如果找到的是目录 echo "目录 : ".$file."<br>"; //就打印出找到的文件名 listdir($path); //如果得到是文件夹,然后递归调用一次方法传入的$path文件夹路径就是判断得到的文件夹赋值给$dirname }else{ echo "文件 : ".$file."<br>"; //否则就找到打印的文件夹名 } } } } listdir($dirname); ?>
获取文件夹的大小
<?php /** * 使用递归遍历获取文件夹的大小 */ header("content-type:text/html;charset=utf-8"); $dirname = "test2"; function totdir($dirname){ static $tot; //这里把$tot定义为静态的,表示$tot全局只有这一个变量 $ds = opendir($dirname); //创建一个目录资源, 传入的目录就是资源 while($file = readdir($ds)){ //从目录中读取到条目 //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹 $path = $dirname."/".$file; //判断,如果是 . 或者 ..的目录就过滤掉 if($file != "." && $file != ".."){ if(is_dir($path)){ //判断如果找到的是目录 totdir($path); //如果得到是文件夹,然后递归调用一次方法传入的$path文件夹路径就是判断得到的文件夹赋值给$dirname }else{ $tot += filesize($path); } } } return $tot." bytes"; } echo totdir($dirname); ?>
删除目录 :
<?php /** * PHP删除目录、复制目录和移动目录 */ header("content-type:text/html;charset=utf-8"); $dirname = "test"; //目录路径 function deldir($dirname){ $ds = opendir($dirname); //创建一个目录资源, 传入的目录就是资源 while($file = readdir($ds)){ //从目录中读取到条目 //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹 $path = $dirname."/".$file; //判断,如果是 . 或者 ..的目录就过滤掉 if($file != "." && $file != ".."){ if(is_dir($path)){ //判断如果找到的是目录 deldir($path); }else{ unlink($path); } } } closedir($ds); //关闭目录资源 return rmdir($dirname); } var_dump(deldir($dirname)); ?>
复制目录 :
<?php /** * PHP删除目录、复制目录和移动目录 */ header("content-type:text/html;charset=utf-8"); $srcDir = "test"; //目录路径 $dstDir = "test2"; //目录路径 function copydir($srcDir,$dstDir){ if(!is_dir($dstDir)){ //这里判断一下目标路径是否存在,不存在则创建 mkdir($dstDir); //创建目标路径 } $ds = opendir($srcDir); //创建一个目录资源, 传入的目录就是资源 while($file = readdir($ds)){ //从目录中读取到条目 //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹 $path = $srcDir."/".$file; //这里的 $file表示的是 test下的条目.所以使用的时候需要用绝对路径在前面加上$srcDir $dstpath = $dstDir."/".$file; //判断,如果是 . 或者 ..的目录就过滤掉 if($file != "." && $file != ".."){ if(is_dir($path)){ //判断如果找到的是目录 copydir($path,$dstpath); //如果是文件夹,那么传过去的$path就表示文件夹的绝对地址 }else{ copy($path,$dstpath); //如果是文件夹,那么传过去的$path就表示文件的绝对地址 } } } closedir($ds); //关闭目录资源 } copydir($srcDir,$dstDir); ?>