微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

为大家分享的第一个操作内容

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

rush: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)) //判断 是否为<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>目录 
  { 
    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,面向过程
/

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

rush:PHP;"> // 列出目录内容 $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 '
'."\n"; } } closedir($handle); } } }

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

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

rush: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文件夹的进行的基本操作,希望对大家的学习有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐