PHP遍歷目錄函數(shù)opendir()、readdir()、closedir()、rewinddir()總結(jié)
在進(jìn)行PHP編程時(shí),需要對(duì)服務(wù)器某個(gè)目錄下面的文件進(jìn)行瀏覽,通常成為遍歷目錄。取得一個(gè)目錄下的文件和子目錄,就需要用到opendir()函數(shù)、readdir()函數(shù)、closedir()函數(shù)和rewinddir()函數(shù)。
①函數(shù)opendir()
函數(shù)opendir()用于打開(kāi)指定目錄,接受一個(gè)目錄的路徑及目錄名作為參數(shù),函數(shù)返回值為可供其他目錄函數(shù)使用的目錄句柄(資源類(lèi)型)。如果該目錄不存在或者沒(méi)有訪(fǎng)問(wèn)權(quán)限,則返回FALSE。
②函數(shù)readdir()
函數(shù)readdir()用于讀取指定目錄,接受已經(jīng)用opendir()函數(shù)打開(kāi)的可操作目錄句柄作為參數(shù),函數(shù)返回當(dāng)前目錄指針位置的一個(gè)文件名,并將目錄指針向后移動(dòng)一位。當(dāng)指針位于目錄的結(jié)尾時(shí),因?yàn)闆](méi)有文件存在則返回FALSE。
③函數(shù)closedir()
函數(shù)closedir()關(guān)閉指定目錄,接受已經(jīng)用opendir()函數(shù)打開(kāi)的可操作目錄句柄作為參數(shù)。函數(shù)無(wú)返回值,運(yùn)行后關(guān)閉打開(kāi)的目錄。
④函數(shù)rewinddir()
函數(shù)reweinddir()倒回目錄句柄,接受已經(jīng)用opendir()函數(shù)打開(kāi)的可操作目錄句柄作為參數(shù)。將目錄指針重置目錄到開(kāi)始處,即倒回目錄的開(kāi)頭。
下面用一個(gè)實(shí)例來(lái)說(shuō)明以上幾個(gè)函數(shù)的使用方法。注意,在使用該例子前請(qǐng)確保同意目錄下有phpMyAdmin文件夾。代碼如下所示:
<?php
$num = 0; //用來(lái)統(tǒng)計(jì)子目錄和文件的個(gè)數(shù)
$dirname = 'phpMyAdmin'; //保存當(dāng)前目錄下用來(lái)便利的一個(gè)目錄名
$dir_handle = opendir($dirname); //用opendir打開(kāi)目錄
//將遍歷的目錄和文件名使用表格格式輸出
echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">';
echo '<caption><h2>目錄'.$dirname.'下面的內(nèi)容</h2></caption>';
echo '<tr align="left" bgcolor="#cccccc">';
echo '<th>文件名</th><th>文件大小</th><th>文件類(lèi)型</th><th>修改時(shí)間</th>';
//使用readdir循環(huán)讀取目錄里的內(nèi)容
while($file = readdir($dir_handle)){
//將將目錄下的文件和當(dāng)前目錄連接起來(lái),才能在程序中使用
$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>'; //格式化顯示文件修改時(shí)間
echo '</tr>';
}
echo '</table>';
closedir($dir_handle); //關(guān)閉文件操作句柄
echo '在<b>'.$dirname.'</b>目錄下的子目錄和文件共有<b>'.$num.'</b>個(gè)';
?>
上述程序首先打開(kāi)一個(gè)目錄指針,并對(duì)其進(jìn)行遍歷。遍歷目錄時(shí),會(huì)包括“.”和“..”兩個(gè)特殊的目錄,如果不需要這倆個(gè)目錄,可以將其屏蔽。當(dāng)然顯示細(xì)節(jié)會(huì)因?yàn)槲募A中內(nèi)容的不同而有所不同。通過(guò)上例可見(jiàn),在PHP中瀏覽文件夾中的內(nèi)容也并不是一件多么復(fù)雜的事情。而且PHP還提供了一種面向?qū)ο蟮姆绞接糜谀夸浀谋闅v,通過(guò)使用“dir”類(lèi)完成。不僅如此,PHP也可以按用戶(hù)的要求檢索目錄下指定的內(nèi)容,提供了glob()函數(shù)檢索指定的目錄。該函數(shù)最終返回一個(gè)包含檢索結(jié)果的數(shù)組。
相關(guān)文章
PHP基于redis計(jì)數(shù)器類(lèi)定義與用法示例
這篇文章主要介紹了PHP基于redis計(jì)數(shù)器類(lèi)定義與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php定義的redis計(jì)數(shù)器類(lèi)及其相關(guān)使用技巧,需要的朋友可以參考下2018-02-02
將FCKeditor導(dǎo)入PHP+SMARTY的實(shí)現(xiàn)方法
這篇文章主要介紹了將FCKeditor導(dǎo)入PHP+SMARTY的實(shí)現(xiàn)方法,涉及整合FCKeditor與SMARTY的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-01-01
php 時(shí)間計(jì)算問(wèn)題小結(jié)
最近在學(xué)PHP,一位朋友問(wèn)到時(shí)間的計(jì)算,此時(shí)我想到了delphi和mssql的計(jì)算函數(shù),它們用起來(lái)都很方便,但查查php手冊(cè)并未發(fā)現(xiàn)類(lèi)似的時(shí)間計(jì)算函數(shù),通過(guò)網(wǎng)文的啟發(fā)和自已的測(cè)試,還是找到簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)2009-01-01
PHP中func_get_args(),func_get_arg(),func_num_args()的區(qū)別
我們?cè)倏匆幌翽HP的這三個(gè)函數(shù)[unc_get_arg(),func_get_args(),func_num_args()]的區(qū)別,我們先看一下,下面的實(shí)例代碼2013-09-09
PHP回調(diào)函數(shù)概念與用法實(shí)例分析
這篇文章主要介紹了PHP回調(diào)函數(shù)概念與用法,簡(jiǎn)單介紹了回調(diào)函數(shù)的概念、原理,并結(jié)合實(shí)例形式分析了回調(diào)函數(shù)的相關(guān)使用技巧,需要的朋友可以參考下2017-11-11
php實(shí)現(xiàn)數(shù)字轉(zhuǎn)億萬(wàn)單位的示例代碼
這篇文章主要為大家詳細(xì)介紹了php如何實(shí)現(xiàn)數(shù)字轉(zhuǎn)億萬(wàn)單位,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
PHP實(shí)現(xiàn)的XXTEA加密解密算法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的XXTEA加密解密算法,結(jié)合實(shí)例形式分析了php XXTEA加密解密算法類(lèi)的定義與簡(jiǎn)單使用操作技巧,需要的朋友可以參考下2018-08-08

