php對(duì)文件夾進(jìn)行相關(guān)操作(遍歷、計(jì)算大?。?/h1>
更新時(shí)間:2015年11月04日 14:52:01 投稿:lijiao
這篇文章主要介紹了php對(duì)文件夾進(jìn)行相關(guān)操作,包括遍歷并打印指定目錄下所有文件和計(jì)算文件大小去空白,以及去重復(fù)值等,感興趣的小伙伴們可以參考一下
為大家分享的第一個(gè)操作內(nèi)容: 遍歷并打印指定目錄下所有文件
<?php
//功能:遍歷并打印指定目錄下所有文件
function scan_dir($dir_name,$dir_flag=1) {
static $FILE_COUNT=1; //記錄文件數(shù)目 初值為1 目錄名稱不記
$FILE_COUNT--; //每調(diào)用一次scan_dir()函數(shù)自減1
@$dir_handle=opendir($dir_name); //抑制錯(cuò)誤信息顯示 便于自定義錯(cuò)誤顯示
if(!$dir_handle)
die("目錄打開(kāi)錯(cuò)誤!");
while(false!==($filename=readdir($dir_handle))) //文件名為‘0'時(shí),readdir返回 FALSE,判斷返回值是否不全等
{
$flag=$dir_flag; //古怪的 is_dir($filename) ! $filename這個(gè)路徑必須能夠?qū)さ?!?dāng)$filename不存在或者不是目錄時(shí)返回false
if($filename!='.'&&$filename!='..')
{
$FILE_COUNT++; //不記錄當(dāng)前路徑和上一級(jí)路徑
while($flag>0&&--$flag) //負(fù)數(shù)仍為真
echo ' ';
if(is_dir($dir_name.$filename)) //判斷 是否為一個(gè)目錄
{
echo '<strong>'."<a href=".$dir_name.$filename.">".$filename."</a></strong><br>";
scan_dir($dir_name.$filename.'/',$dir_flag+1); //$dir_flag標(biāo)志目錄樹(shù)層次
}
else
{
echo "<a href=".$dir_name.$filename.">".$filename."</a><br>";
}
}
}
closedir($dir_handle); //關(guān)閉目錄句柄
echo "文件總數(shù):".$FILE_COUNT.'<br>';
}
scan_dir('D:/AppServ/www/mytest/shopping/payment/');
/*總結(jié):
1,關(guān)于路徑 目錄的路徑末尾都加上 '/' 以便后面與文件名字符串連接 形成新的 路徑字符串
2,目錄遍歷 這是一個(gè)關(guān)于樹(shù)的問(wèn)題
3,is_dir()函數(shù)第一個(gè)參數(shù)必須是一個(gè)能夠識(shí)別的PATH否則會(huì)因目錄不存在而返回一個(gè)false容易誤解
得出 “這不是一個(gè)目錄”的錯(cuò)誤結(jié)論 形成邏輯上的錯(cuò)誤
4,注意當(dāng)前路徑'.'和上一級(jí)路徑'..'的剔除 否則 在遞歸環(huán)節(jié)造成死循環(huán) 直至內(nèi)存耗盡出錯(cuò)。
5,dir_flag這個(gè)變量是記錄樹(shù)的深度 以便于目錄分級(jí)分層輸出 */
/*不足
1,輸出排版不完善
2,邏輯與表示層混亂 不分明 大忌!
3,面向過(guò)程
*/
#####單目錄#####
// 列出目錄內(nèi)容 $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 對(duì)文件進(jìn)行的第二個(gè)操作內(nèi)容:獲得文件夾大小 計(jì)算文件
<?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;
}
//單位自動(dòng)轉(zhuǎn)換函數(shù)
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)';
以上就是關(guān)于php對(duì)文件夾的進(jìn)行的基本操作,希望對(duì)大家的學(xué)習(xí)有所幫助。
您可能感興趣的文章:- PHP中字符與字節(jié)的區(qū)別及字符串與字節(jié)轉(zhuǎn)換示例
- php字符串截取中文截取2,單字節(jié)截取模式
- 用PHP來(lái)計(jì)算某個(gè)目錄大小的方法
- php計(jì)算一個(gè)文件大小的方法
- php計(jì)算整個(gè)mysql數(shù)據(jù)庫(kù)大小的方法
- php使用遞歸計(jì)算文件夾大小
- php計(jì)算整個(gè)目錄大小的方法
- php計(jì)算整個(gè)目錄大小的方法
- php strlen mb_strlen計(jì)算中英文混排字符串長(zhǎng)度
- PHP實(shí)現(xiàn)字節(jié)數(shù)Byte轉(zhuǎn)換為KB、MB、GB、TB的方法
相關(guān)文章
-
PHP中使用正則表達(dá)式提取中文實(shí)現(xiàn)筆記
這篇文章主要介紹了PHP中使用正則表達(dá)式提取中文實(shí)現(xiàn)筆記,本文還講解了韓文、日文的正則表達(dá)式,并同時(shí)給出實(shí)現(xiàn)代碼和使用示例,需要的朋友可以參考下 2015-01-01
-
圖文詳解phpstorm配置Xdebug進(jìn)行調(diào)試PHP教程
這篇文章主要為大家詳細(xì)的介紹了phpstorm配置Xdebug進(jìn)行調(diào)試PHP教程 ,感興趣的小伙伴們可以參考一下 2016-06-06
-
PHP實(shí)現(xiàn)的注冊(cè),登錄及查詢用戶資料功能API接口示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的注冊(cè),登錄及查詢用戶資料功能API接口,結(jié)合具體實(shí)例形式分析了php服務(wù)器端用戶注冊(cè)、登陸、查詢及curl登陸查詢功能實(shí)現(xiàn)技巧,需要的朋友可以參考下 2017-06-06
-
教你如何在CI框架中使用 .htaccess 隱藏url中index.php
CodeIgniter(以下簡(jiǎn)稱"CI")是一款國(guó)外優(yōu)秀的PHP輕量級(jí)MVC框架,它支持PHP4和PHP5,是開(kāi)發(fā)中小型可拓展性需求高的Web應(yīng)用程序的利器。很多博客程序,開(kāi)源的cms程序,都是采用CI進(jìn)行的編寫(xiě)。 2014-06-06
-
Discuz板塊橫排顯示圖片的實(shí)現(xiàn)方法
Discuz板塊橫排顯示圖片的實(shí)現(xiàn)方法... 2007-05-05
最新評(píng)論
為大家分享的第一個(gè)操作內(nèi)容: 遍歷并打印指定目錄下所有文件
<?php //功能:遍歷并打印指定目錄下所有文件 function scan_dir($dir_name,$dir_flag=1) { static $FILE_COUNT=1; //記錄文件數(shù)目 初值為1 目錄名稱不記 $FILE_COUNT--; //每調(diào)用一次scan_dir()函數(shù)自減1 @$dir_handle=opendir($dir_name); //抑制錯(cuò)誤信息顯示 便于自定義錯(cuò)誤顯示 if(!$dir_handle) die("目錄打開(kāi)錯(cuò)誤!"); while(false!==($filename=readdir($dir_handle))) //文件名為‘0'時(shí),readdir返回 FALSE,判斷返回值是否不全等 { $flag=$dir_flag; //古怪的 is_dir($filename) ! $filename這個(gè)路徑必須能夠?qū)さ?!?dāng)$filename不存在或者不是目錄時(shí)返回false if($filename!='.'&&$filename!='..') { $FILE_COUNT++; //不記錄當(dāng)前路徑和上一級(jí)路徑 while($flag>0&&--$flag) //負(fù)數(shù)仍為真 echo ' '; if(is_dir($dir_name.$filename)) //判斷 是否為一個(gè)目錄 { echo '<strong>'."<a href=".$dir_name.$filename.">".$filename."</a></strong><br>"; scan_dir($dir_name.$filename.'/',$dir_flag+1); //$dir_flag標(biāo)志目錄樹(shù)層次 } else { echo "<a href=".$dir_name.$filename.">".$filename."</a><br>"; } } } closedir($dir_handle); //關(guān)閉目錄句柄 echo "文件總數(shù):".$FILE_COUNT.'<br>'; } scan_dir('D:/AppServ/www/mytest/shopping/payment/'); /*總結(jié): 1,關(guān)于路徑 目錄的路徑末尾都加上 '/' 以便后面與文件名字符串連接 形成新的 路徑字符串 2,目錄遍歷 這是一個(gè)關(guān)于樹(shù)的問(wèn)題 3,is_dir()函數(shù)第一個(gè)參數(shù)必須是一個(gè)能夠識(shí)別的PATH否則會(huì)因目錄不存在而返回一個(gè)false容易誤解 得出 “這不是一個(gè)目錄”的錯(cuò)誤結(jié)論 形成邏輯上的錯(cuò)誤 4,注意當(dāng)前路徑'.'和上一級(jí)路徑'..'的剔除 否則 在遞歸環(huán)節(jié)造成死循環(huán) 直至內(nèi)存耗盡出錯(cuò)。 5,dir_flag這個(gè)變量是記錄樹(shù)的深度 以便于目錄分級(jí)分層輸出 */ /*不足 1,輸出排版不完善 2,邏輯與表示層混亂 不分明 大忌! 3,面向過(guò)程 */
#####單目錄#####
// 列出目錄內(nèi)容 $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 對(duì)文件進(jìn)行的第二個(gè)操作內(nèi)容:獲得文件夾大小 計(jì)算文件
<?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; } //單位自動(dòng)轉(zhuǎn)換函數(shù) 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)';
以上就是關(guān)于php對(duì)文件夾的進(jìn)行的基本操作,希望對(duì)大家的學(xué)習(xí)有所幫助。
- PHP中字符與字節(jié)的區(qū)別及字符串與字節(jié)轉(zhuǎn)換示例
- php字符串截取中文截取2,單字節(jié)截取模式
- 用PHP來(lái)計(jì)算某個(gè)目錄大小的方法
- php計(jì)算一個(gè)文件大小的方法
- php計(jì)算整個(gè)mysql數(shù)據(jù)庫(kù)大小的方法
- php使用遞歸計(jì)算文件夾大小
- php計(jì)算整個(gè)目錄大小的方法
- php計(jì)算整個(gè)目錄大小的方法
- php strlen mb_strlen計(jì)算中英文混排字符串長(zhǎng)度
- PHP實(shí)現(xiàn)字節(jié)數(shù)Byte轉(zhuǎn)換為KB、MB、GB、TB的方法
相關(guān)文章
PHP中使用正則表達(dá)式提取中文實(shí)現(xiàn)筆記
這篇文章主要介紹了PHP中使用正則表達(dá)式提取中文實(shí)現(xiàn)筆記,本文還講解了韓文、日文的正則表達(dá)式,并同時(shí)給出實(shí)現(xiàn)代碼和使用示例,需要的朋友可以參考下2015-01-01圖文詳解phpstorm配置Xdebug進(jìn)行調(diào)試PHP教程
這篇文章主要為大家詳細(xì)的介紹了phpstorm配置Xdebug進(jìn)行調(diào)試PHP教程 ,感興趣的小伙伴們可以參考一下2016-06-06PHP實(shí)現(xiàn)的注冊(cè),登錄及查詢用戶資料功能API接口示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的注冊(cè),登錄及查詢用戶資料功能API接口,結(jié)合具體實(shí)例形式分析了php服務(wù)器端用戶注冊(cè)、登陸、查詢及curl登陸查詢功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06教你如何在CI框架中使用 .htaccess 隱藏url中index.php
CodeIgniter(以下簡(jiǎn)稱"CI")是一款國(guó)外優(yōu)秀的PHP輕量級(jí)MVC框架,它支持PHP4和PHP5,是開(kāi)發(fā)中小型可拓展性需求高的Web應(yīng)用程序的利器。很多博客程序,開(kāi)源的cms程序,都是采用CI進(jìn)行的編寫(xiě)。2014-06-06Discuz板塊橫排顯示圖片的實(shí)現(xiàn)方法
Discuz板塊橫排顯示圖片的實(shí)現(xiàn)方法...2007-05-05