• 技术文章 >后端开发 >php教程

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

    2016-05-29 11:48:01原创239
    为大家分享的第一个操作内容: 遍历并打印指定目录下所有文件

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

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

    // 列出目录内容 $dir 不要加 '//m.sbmmt.com/m/' 
    function list_files($dir) 
    { 
      if(is_dir($dir)) 
      { 
        if($handle = opendir($dir)) 
        { 
          while(($file = readdir($handle)) !== false) 
          { 
            if($file != "." && $file != ".." && $file != "Thumbs.db") 
            { 
              echo ''.$file.'
    '."\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'])."//m.sbmmt.com/m/"); 
    echo '('.$big.' bytes)'; 

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP正则表达式之捕获组与非捕获组_PHP 下一篇:PHP环境中Memcache的安装和使用_PHP
    PHP编程就业班

    相关文章推荐

    • 逃离伪PHP软件工程师应该做的事 • php兑现自动获取生成关键词功能 • 这个SQL里的函数是mysql函数还是php函数,函数意思是,该怎么处理 • 【php】在Windows2003下的IIS配置php5.4• Oauth2.0开发 为什么子要提交access_token或者还有一两个其他固定参数就能识别用户身份?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网