为大家分享的第一个操作内容: 遍历并打印指定目录下所有文件
<?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 \' \';
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/\'));
// 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对文件夹的进行的基本操作,希望对大家的学习有所帮助。
本文地址:https://www.stayed.cn/item/16558
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我