600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > php 操作文件夹 (遍历 计算大小)

php 操作文件夹 (遍历 计算大小)

时间:2018-10-06 16:45:05

相关推荐

php 操作文件夹 (遍历 计算大小)

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

<?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不存在或者不是目录时返回falseif($filename!='.'&&$filename!='..'){$FILE_COUNT++; //不记录当前路径和上一级路径while($flag>0&&--$flag)//负数仍为真echo '&nbsp';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');

2. PHP 获得文件夹大小 计算文件

<?phpfunction 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; //Terabyteif($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 bytefunction 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)';

计算文件大小用 filesize()

/php/func_filesystem_filesize.asp

遍历文件夹下所有文件,编辑删除

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。