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 ''."".$filename."
";

scan_dir($dir_name.$filename.'/',$dir_flag+1); //$dir_flag标志目录树层次

}

else

{

echo "".$filename."
";

}

}

}

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,面向过程

*/

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

// 列出目录内容 $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 '

}

}

closedir($handle);

}

}

}

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值