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


Posted in PHP onNovember 04, 2015

为大家分享的第一个操作内容: 遍历并打印指定目录下所有文件

<?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 '<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 相关文章推荐
真正面向对象编程:PHP5.01发布
Oct 09 PHP
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
PHP英文字母大小写转换函数小结
May 03 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
win7系统配置php+Apache+mysql环境的方法
Aug 21 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
php mysql 封装类实例代码
Sep 18 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 PHP
laravel5 Eloquent 实现事务方式
Oct 21 PHP
PHP实现HTML页面静态化的方法
Nov 04 #PHP
php实现网站留言板功能
Nov 04 #PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 #PHP
两种php去除二维数组的重复项方法
Nov 04 #PHP
PHP扩展开发教程(总结)
Nov 04 #PHP
PHP实现GIF图片验证码
Nov 04 #PHP
php实现分页显示
Nov 03 #PHP
You might like
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
第六章 php目录与文件操作
2011/12/30 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
flask入门之表单的实现
2018/07/18 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Django实现文件上传下载功能
2019/10/06 Python
Python实现word2Vec model过程解析
2019/12/16 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
优秀村官事迹材料
2014/01/10 职场文书
学年自我鉴定
2014/01/16 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
学校工作推荐信范文
2014/07/11 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
民主评议党员工作总结
2014/10/20 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers