您好,登錄后才能下訂單哦!
這篇文章主要介紹“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,面向過程 */
#####單目錄#####
// 列出目錄內容 $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怎么對文件夾進行相關操作”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。