這篇文章主要介紹了PHP遍曆目錄函式opendir()、readdir()、closedir()、rewinddir()總結,並給出了一個綜合使用這些函數的例子做了一個簡易檔案瀏覽器,需要的朋友可以參考下
在進行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()函數檢索指定的目錄。該函數最終返回一個包含檢索結果的數組。