加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

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

发布时间:2020-05-23 18:54:49 所属栏目: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 '<h3>'."<a href=".$dir_name.$filename."&gt;".$filename."</a></h3><br>"; 
    scan_dir($dir_name.$filename.'/',$dir_flag+1);   //$dir_flag标志目录树层次 
  } 
  else  
  { 
    echo "<a href=".$dir_name.$filename."&gt;".$filename."</a><br>"; 
  } 
} 

}
closedir($dir_handle); //关闭目录句柄
echo "文件总数:".$FILE_COUNT.'
';
}

scan_dir('D:/AppServ/www/mytest/shopping/payment/');

/总结:
1,关于路径 目录的路径末尾都加上 '/' 以便后面与文件名字符串连接 形成新的 路径字符串
2,目录遍历 这是一个关于树的问题
3,is_dir()函数第一个参数必须是一个能够识别的PATH否则会因目录不存在而返回一个false容易误解
得出 “这不是一个目录”的错误结论 形成逻辑上的错误
4,注意当前路径'.'和上一级路径'..'的剔除 否则 在递归环节造成死循环 直至内存耗尽出错。
5,dir_flag这个变量是记录树的深度 以便于目录分级分层输出
/
/不足
1,输出排版不完善
2,逻辑与表示层混乱 不分明 大忌!
3,面向过程
/

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

'."n"; } } closedir($handle); } } }

list_files('D:/AppServ/www/mytest/shopping/payment');

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

//单位自动转换函数
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对文件夹的进行的基本操作,希望对大家的学习有所帮助。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读