在我們實際的開發需求中,經常用到操作文件,今天就講一下關於獲取指定目錄下的所有文件的幾種常用方法:
1、scandir()函數
scandir() 函數返回指定目錄中的文件和目錄的數組。
scandir(directory,sorting_order,context);
參數 | 描述 |
---|---|
directory | 必需。規定要掃描的目錄。 |
sorting_order | 可選。規定排列順序。默認是 0,表示按字母升序排列。 如果設置為 SCANDIR_SORT_DESCENDING 或者 1,則表示按字母降序排列。 如果設置為 SCANDIR_SORT_NONE,則返回未排列的結果。 |
context | 可選。規定目錄句柄的環境。context 是可修改目錄流的行為的一套選項。 |
若成功則返回文件和目錄的數組。失敗則返回 FALSE。
如果 directory 不是目錄,則拋出 E_WARNING 級別的錯誤。
假如有如下目錄結構:
在sf.php寫入代碼如下:
<?php //獲取當前文件所在的絕對目錄 $dir = dirname(__FILE__); //掃描文件夾 $file = scandir($dir); //顯示 echo " <pre>"; print_r($file); ?>
顯示如下圖所示:
2、使用opendir、readdir、closedir
opendir() 函數打開一個目錄句柄,若成功,則該函數返回一個目錄流,否則返回 false 以及一個 error。可以通過在函數名前加上 "@" 來隱藏 error 的輸出。
readdir() 函數返回由 opendir() 打開的目錄句柄中的條目。若成功,則該函數返回一個文件名,否則返回 false。
closedir — 關閉目錄句柄。
代碼如下:
<?php //取得當前文件所在目錄 $dir = dirname(__FILE__); //判斷目標目錄是否是文件夾 $file_arr = array(); if(is_dir($dir)){ //打開 if($dh = @opendir($dir)){ //讀取 while(($file = readdir($dh)) !== false){ if($file != '.' && $file != '..'){ $file_arr[] = $file; } } //關閉 closedir($dh); } } ?> echo "<pre>"; print_r($file);
結果如圖: