• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php对文件夹进行遍历及计算大小

php 搞代码 4年前 (2022-01-22) 13次浏览 已收录 0个评论

本篇文章主要介绍php对文件夹进行遍历及计算大小,感兴趣的朋友参考下,希望对大家有所帮助。

遍历并打印指定目录下所有文件

<?php //功能:遍历并打印指定目录下所有文件  function scan_dir($dir_name,$dir_flag=1) {   static $FILE_COUNT=1;        //记录文件数目 初值为1 目录名称不记   $FILE_COUNT--;            //每调用一次scan_dir()函数自减1   @$dir_handle=opendir($dir_name);   //抑制错误信息显示 便于自定义错误显示   if(!$dir_handle)   die("目录打开错误!");   while(false!==($filename=readdir($dir_handle))) //文件名为‘0'时,readdir返回 FALSE,判断返回值是否不全等   {                        $flag=$dir_flag;         //古怪的 is_dir($filename) ! $filename这个路径必须能够寻到!当$filename不存在或者不是目录时返回false     if($filename!='.'&&$filename!='..')     {       $FILE_COUNT++;          //不记录当前路径和上一级路径       while($flag>0&&--$flag)     //负数仍为真         echo '&nbsp';       if(is_dir($dir_name.$filename)) //判断 是否为一个目录       {         echo '<strong>'."<a href=".$dir_name.$filename.">".$filename."</a></st<p>4本文¥来源gao!%daima.com搞$代*!码$网9</p><pre>搞代gaodaima码

rong><br>"; scan_dir($dir_name.$filename.'/',$dir_flag+1); //$dir_flag标志目录树层次 } else { echo "<a href=".$dir_name.$filename.">".$filename."</a><br>"; } } } closedir($dir_handle); //关闭目录句柄 echo "文件总数:".$FILE_COUNT.'<br>'; } scan_dir('D:/AppServ/www/mytest/shopping/payment/'); /*总结:1,关于路径 目录的路径末尾都加上 '/' 以便后面与文件名字符串连接 形成新的 路径字符串2,目录遍历 这是一个关于树的问题3,is_dir()函数第一个参数必须是一个能够识别的PATH否则会因目录不存在而返回一个false容易误解得出 “这不是一个目录”的错误结论 形成逻辑上的错误4,注意当前路径'.'和上一级路径'..'的剔除 否则 在递归环节造成死循环 直至内存耗尽出错。5,dir_flag这个变量是记录树的深度 以便于目录分级分层输出 *//*不足1,输出排版不完善2,逻辑与表示层混乱 不分明 大忌!3,面向过程*/

#####单目录#####

// 列出目录内容 $dir 不要加 '/' function list_files($dir) {   if(is_dir($dir))   {     if($handle = opendir($dir))     {       while(($file = readdir($handle)) !== false)       {         if($file != "." && $file != ".." && $file != "Thumbs.db")         {           echo '<a href="'.$dir.'/'.$file.'">'.$file.'</a><br>'."\n";         }       }       closedir($handle);     }   } }  list_files('D:/AppServ/www/mytest/shopping/payment');

PHP 对文件进行的第二个操作内容:获得文件夹大小 计算文件

<?php  function getDirSize($dir) {   $handle = opendir($dir);   while (false!==($FolderOrFile = readdir($handle)))   {     if($FolderOrFile != "." && $FolderOrFile != "..")     {       if(is_dir("$dir/$FolderOrFile"))       {         $sizeResult += getDirSize("$dir/$FolderOrFile");       }       else       {         $sizeResult += filesize("$dir/$FolderOrFile");       }     }     }    closedir($handle);   return $sizeResult; }  //单位自动转换函数 function getRealSize($size) {   $kb = 1024;     //Kilobyte   $mb = 1024 * $kb;  //Megabyte   $gb = 1024 * $mb;  //Gigabyte   $tb = 1024 * $gb;  //Terabyte        if($size < $kb)   {     return $size." B";   }   else if($size < $mb)   {     return round($size/$kb,2)." KB";   }   else if($size < $gb)   {     return round($size/$mb,2)." MB";   }   else if($size < $tb)   {     return round($size/$gb,2)." GB";   }   else   {     return round($size/$tb,2)." TB";   } }  echo getRealSize(getDirSize('D:/AppServ/www/mytest/'));    // get byte function dirsize($dir) {   $handle=opendir($dir);   $size = 0;   while ( $file=readdir($handle) )   {   if ( ( $file == "." ) || ( $file == ".." ) ) continue;   if ( is_dir("$dir/$file") )   $size += dirsize("$dir/$file");   else   $size += filesize("$dir/$file");   }   closedir($handle);   return $size; }  $big=dirsize(dirname($_SERVER['SCRIPT_FILENAME'])."/"); echo '('.$big.' bytes)';

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php对文件夹进行遍历及计算大小
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址