4個php遍曆函數opendir()、readdir()、closedir()、rewinddir()用法執行個體匯總

來源:互聯網
上載者:User
這篇文章主要介紹了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()函數檢索指定的目錄。該函數最終返回一個包含檢索結果的數組。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.