首页 > 编程 > PHP > 正文

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

2020-03-22 17:00:22
字体:
来源:转载
供稿:网友
function scan_dir($dir_name,$dir_flag=1) { html' target='_blank'>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/'));
$big=dirsize(dirname($_SERVER['SCRIPT_FILENAME'])."/"); echo '('.$big.' bytes)'; 以上就是关于php对文件夹的进行的基本操作,希望对大家的学习有所帮助。PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表