<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. php語言

    用PHP遍歷目錄下的全部文件

    時間:2025-03-17 12:39:12 php語言 我要投稿
    • 相關推薦

    用PHP遍歷目錄下的全部文件

      項目中有這么一個需求,需要遍歷某個文件夾(目錄)下的所有文件。下面是解決這個問題所寫的PHP代碼,歡迎閱讀,更多消息請關注應屆畢業生網。

      第一種實現辦法是用dir返回對象,第二種實現辦法:用readdir()函數。

      /**********************

      一個簡單的目錄遞歸函數

      第一種實現辦法:用dir返回對象

      ***********************/

      function tree($directory)

      {

      $mydir = dir($directory);

      echo "

      ";

      while($file = $mydir->read())

      {

      if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!=".."))

      {

      echo "

      $file

      ";

      tree("$directory/$file");

      }

      else

      echo "

      $file

      ";

      }

      echo "

      ";

      $mydir->close();

      }

      //開始運行

      echo "

      目錄為粉紅色

      ";

      tree("./nowamagic");

      /***********************

      第二種實現辦法:用readdir()函數

      ************************/

      function listDir($dir)

      {

      if(is_dir($dir))

      {

      if ($dh = opendir($dir))

      {

      while (($file = readdir($dh)) !== false)

      {

      if((is_dir($dir."/".$file)) && $file!="." && $file!="..")

      {

      echo "文件名:",$file,"

      ";

      listDir($dir."/".$file."/");

      }

      else

      {

      if($file!="." && $file!="..")

      {

      echo $file."

      ";

      }

      }

      }

      closedir($dh);

      }

      }

      }

      //開始運行

      listDir("./nowamagic");

      ?>

      拓展:PHP遞歸復制、移動目錄的自定義函數操作分

      雖然復制一個目錄是文件操作的基本功能。但PHP中也沒有給出特定的函數,同樣需要自定義一個遞歸函數實現。要復制一個包含多個子目錄的目錄,將涉及文件的復制、目錄創建等操作。復制一個文件可以通過PHP提供的copy()函數完成,創建目錄可以使用mkdir()函數。定義函數時,首先對源目錄進行遍歷,如果遇到的是普通文件,直接使用copy()函數進行復制。如果遍歷時遇到一個目錄,則必須建立該目錄,然后再對該目錄下的文件進行復制操作,如果還有子目錄,則使用遞歸重復操作,最終將整個目錄復制完成。自定義的遞歸函數復制目錄的程序代碼如下所示:

      復制代碼 代碼如下:

      <?php

      //自定義函數遞歸的復制帶有多級子目錄的目錄

      function copyDir($dirSrc,$dirTo){

      if(is_file($dirTo)){ //如果目標不是一個目錄則退出

      echo "目標不是目錄不能創建!!";

      return; //退出函數

      }

      if(!file_exists($dirTo)){ //如果目標不是一個目錄則退出

      mkdir($dirTo); //創建目錄

      }

      if($dir_handle = @opendir($directory)){ //打開目錄,并判斷是否能成功打開

      while($filename = readdir($dir_handle)){ //循環遍歷目錄下的所有文件

      if($filename != "."&& $filename != ".."){ //一定要排除兩個特殊的目錄

      $subFile = $directory."/".$filename; //將目錄下的子文件和當前目錄相連

      $sunToFile = $dirTo."/".$filename; //將目標目錄的多級子目錄相連

      if(is_dir($subSrcFile)) //如果為目錄則條件成立

      copyDir($subSrcFile,$subToFile); //遞歸調用自己復制子目錄

      if(is_file($subSrcFile)) //如果是文件則條件成立

      copy($subSrcFile,$subToFile); //直接復制到目標位置

      }

      }

      losedir($dir_handle); //關閉文件資源

      }

      }

      //測試函數,將目錄“phpMyAdmin”復制到“D:/admin”

      copyDir("phpMyAdmin","D:/admin");

      ?>

      從安全和跨平臺等方面考慮,盡量不要去調用操作系統的SHELL命令“cp-a”完成目錄的復制。

    【用PHP遍歷目錄下的全部文件】相關文章:

    php遍歷替換目錄下文件指定內容04-06

    php遞歸遍歷刪除文件的方法04-02

    PHP遍歷目錄文件常用方法03-06

    php查找指定目錄下指定大小文件的方法08-03

    php文件鎖怎么用07-03

    用PHP讀取文件的正確方法04-07

    php遍歷數組的方法分享07-13

    php遞歸遍歷多維數組的方法04-11

    如何打開php文件 php文件怎么打開01-13

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人