溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php怎么對文件夾進行相關操作

發(fā)布時間:2021-07-01 11:32:39 來源:億速云 閱讀:102 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要介紹“php怎么對文件夾進行相關操作”,在日常操作中,相信很多人在php怎么對文件夾進行相關操作問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php怎么對文件夾進行相關操作”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

為大家分享的第一個操作內(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);   //抑制錯誤信息顯示 便于自定義錯誤顯示 
  if(!$dir_handle) 
  die("目錄打開錯誤!"); 
  while(false!==($filename=readdir($dir_handle))) //文件名為‘0'時,readdir返回 FALSE,判斷返回值是否不全等 
  {                   
 
    $flag=$dir_flag;         //古怪的 is_dir($filename) ! $filename這個路徑必須能夠?qū)さ?!?filename不存在或者不是目錄時返回false 
    if($filename!='.'&&$filename!='..') 
    { 
      $FILE_COUNT++;          //不記錄當前路徑和上一級路徑 
      while($flag>0&&--$flag)     //負數(shù)仍為真 
        echo '&nbsp'; 
      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 "文件總數(shù):".$FILE_COUNT.'<br>'; 
} 
 
scan_dir('D:/AppServ/www/mytest/shopping/payment/'); 
 
 
/*總結(jié):
1,關于路徑 目錄的路徑末尾都加上 '/' 以便后面與文件名字符串連接 形成新的 路徑字符串
2,目錄遍歷 這是一個關于樹的問題
3,is_dir()函數(shù)第一個參數(shù)必須是一個能夠識別的PATH否則會因目錄不存在而返回一個false容易誤解
得出 “這不是一個目錄”的錯誤結(jié)論 形成邏輯上的錯誤
4,注意當前路徑'.'和上一級路徑'..'的剔除 否則 在遞歸環(huán)節(jié)造成死循環(huán) 直至內(nèi)存耗盡出錯。
5,dir_flag這個變量是記錄樹的深度 以便于目錄分級分層輸出                */
/*不足
1,輸出排版不完善
2,邏輯與表示層混亂 不分明 大忌!
3,面向過程
*/

#####單目錄#####

// 列出目錄內(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 對文件進行的第二個操作內(nèi)容:獲得文件夾大小 計算文件

<?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; 
} 
 
//單位自動轉(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)';

到此,關于“php怎么對文件夾進行相關操作”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI