程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP遍歷目錄函數opendir()、readdir()、closedir()、rewinddir()總結

PHP遍歷目錄函數opendir()、readdir()、closedir()、rewinddir()總結

編輯:PHP綜合

在進行PHP編程時,需要對服務器某個目錄下面的文件進行浏覽,通常成為遍歷目錄。取得一個目錄下的文件和子目錄,就需要用到opendir()函數、readdir()函數、closedir()函數和rewinddir()函數。

①函數opendir()

函數opendir()用於打開指定目錄,接受一個目錄的路徑及目錄名作為參數,函數返回值為可供其他目錄函數使用的目錄句柄(資源類型)。如果該目錄不存在或者沒有訪問權限,則返回FALSE。

②函數readdir()

函數readdir()用於讀取指定目錄,接受已經用opendir()函數打開的可操作目錄句柄作為參數,函數返回當前目錄指針位置的一個文件名,並將目錄指針向後移動一位。當指針位於目錄的結尾時,因為沒有文件存在則返回FALSE。

③函數closedir()

函數closedir()關閉指定目錄,接受已經用opendir()函數打開的可操作目錄句柄作為參數。函數無返回值,運行後關閉打開的目錄。

④函數rewinddir()

函數reweinddir()倒回目錄句柄,接受已經用opendir()函數打開的可操作目錄句柄作為參數。將目錄指針重置目錄到開始處,即倒回目錄的開頭。

下面用一個實例來說明以上幾個函數的使用方法。注意,在使用該例子前請確保同意目錄下有phpMyAdmin文件夾。代碼如下所示:
復制代碼 代碼如下:
<?php
$num = 0; //用來統計子目錄和文件的個數
$dirname = 'phpMyAdmin'; //保存當前目錄下用來便利的一個目錄名
$dir_handle = opendir($dirname); //用opendir打開目錄
 
//將遍歷的目錄和文件名使用表格格式輸出
echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">';
echo '<caption><h2>目錄'.$dirname.'下面的內容</h2></caption>';
echo '<tr align="left" bgcolor="#cccccc">';
echo '<th>文件名</th><th>文件大小</th><th>文件類型</th><th>修改時間</th>';
 
//使用readdir循環讀取目錄裡的內容
while($file = readdir($dir_handle)){
//將將目錄下的文件和當前目錄連接起來,才能在程序中使用
$dirFile = $dirname."/".$file;
 
$bgcolor = $num+%2==0 ? '#FFFFFF' : '#CCCCCC'; //各行一種顏色
echo '<tr bgcolor='.$bgcolor.'>';
echo '<td>'.filesize($dirFile).'</td>'; //顯示文件名
echo '<td>'.filetype($dirFile).'</td>'; //顯示文件大小
echo '<td>'.date("Y/n/t",filemtime($dirFile)).'</td>'; //格式化顯示文件修改時間
echo '</tr>';
}
 
echo '</table>';
closedir($dir_handle); //關閉文件操作句柄
echo '在<b>'.$dirname.'</b>目錄下的子目錄和文件共有<b>'.$num.'</b>個';
?>

上述程序首先打開一個目錄指針,並對其進行遍歷。遍歷目錄時,會包括“.”和“..”兩個特殊的目錄,如果不需要這倆個目錄,可以將其屏蔽。當然顯示細節會因為文件夾中內容的不同而有所不同。通過上例可見,在PHP中浏覽文件夾中的內容也並不是一件多麼復雜的事情。而且PHP還提供了一種面向對象的方式用於目錄的遍歷,通過使用“dir”類完成。不僅如此,PHP也可以按用戶的要求檢索目錄下指定的內容,提供了glob()函數檢索指定的目錄。該函數最終返回一個包含檢索結果的數組。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved