《PHP編程:php對文件夾進行相關操作(遍歷、計算大小)》要點:
本文介紹了PHP編程:php對文件夾進行相關操作(遍歷、計算大小),希望對您有用。如果有疑問,可以聯系我們。
PHP編程為大家分享的第一個操作內容:?遍歷并打印指定目錄下所有文件
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 ' ';
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,面向過程
*/
PHP編程#####單目錄#####
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 '<a href="'.$dir.'/'.$file.'">'.$file.'</a><br>'."\n";
}
}
closedir($handle);
}
}
}
list_files('D:/AppServ/www/mytest/shopping/payment');
PHP編程?PHP 對文件進行的第二個操作內容:獲得文件夾大小 計算文件
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編程以上就是關于php對文件夾的進行的基本操作,希望對大家的學習有所贊助.
歡迎參與《PHP編程:php對文件夾進行相關操作(遍歷、計算大小)》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8460.html