php对文件夹进行相关操作(遍历、计算大小)

 更新时间:2015年11月04日 14:52:01   投稿:lijiao  
这篇文章主要介绍了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></strong><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)'; 

以上就是关于php对文件夹的进行的基本操作,希望对大家的学习有所帮助。

相关文章

  • PHP序列化操作方法分析

    PHP序列化操作方法分析

    这篇文章主要介绍了PHP序列化操作方法,结合实例形式分析了php序列化的原理、实现方法、相关函数与操作技巧,需要的朋友可以参考下
    2016-09-09
  • 深入讲解PHP Session及如何保持其不过期的方法

    深入讲解PHP Session及如何保持其不过期的方法

    这篇文章主要介绍了深入讲解PHP Session及如何保持其不过期的方法,包括对Session回收机制的讲解以及SessionId保持不变的问题的解决,需要的朋友可以参考下
    2015-08-08
  • php读取javascript设置的cookies的代码

    php读取javascript设置的cookies的代码

    最主要的就是给cookies设置一个名字,在javascript设置cookies的时候不要用无参数函数,那样用的话php没办法读取
    2010-04-04
  • joomla内置的表单验证功能使用方法

    joomla内置的表单验证功能使用方法

    Joomla有自己的表单验证功能,可以很方便地实现验证,没有通过验证的输入框在提交报错后会用红色边框表示,很清楚地知道漏了那几项没填。
    2010-06-06
  • php中的四舍五入函数代码(floor函数、ceil函数、round与intval)

    php中的四舍五入函数代码(floor函数、ceil函数、round与intval)

    php 中处理浮点数时经常要需要四舍五入。在php 中有两个函数适用于这种情况:floor函数、ceil函数和round函数
    2014-07-07
  • PHP读取word文档的方法分析【基于COM组件】

    PHP读取word文档的方法分析【基于COM组件】

    这篇文章主要介绍了PHP读取word文档的方法,较为详细的分析了COM组件的开启、属性设置及基于COM组件打开并读取word文档的操作技巧,需要的朋友可以参考下
    2017-08-08
  • php中字符查找函数strpos、strrchr与strpbrk用法

    php中字符查找函数strpos、strrchr与strpbrk用法

    这篇文章主要介绍了php中字符查找函数strpos、strrchr与strpbrk用法,以实例形式较为详细的分析了php中字符查找函数strpos、strrchr与strpbrk的具体用法及相关注意事项,非常实用,需要的朋友可以参考下
    2014-11-11
  • PHP+原生态ajax实现的省市联动功能详解

    PHP+原生态ajax实现的省市联动功能详解

    这篇文章主要介绍了PHP+原生态ajax实现的省市联动功能,较为详细的分析了ajax交互的原理、实现方法以及php结合ajax实现省市联动下拉菜单功能的相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • PHP 执行系统外部命令 system() exec() passthru()

    PHP 执行系统外部命令 system() exec() passthru()

    PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功倍。
    2009-08-08
  • php图像处理类实例

    php图像处理类实例

    这篇文章主要介绍了php图像处理类,涉及php操作图片的大小修改、加水印、生成验证码、输出及保存图像的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论