當前位置:才華齋>設計>網頁設計>

PHP遞迴複製、移動目錄的自定義函式操作分享

網頁設計 閱讀(2.17W)

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

PHP遞迴複製、移動目錄的自定義函式操作分享

複製程式碼 程式碼如下:

<?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”完成目錄的複製。