《PHP教程:PHP遞歸復制、移動目錄的自定義函數分享》要點:
本文介紹了PHP教程:PHP遞歸復制、移動目錄的自定義函數分享,希望對您有用。如果有疑問,可以聯系我們。
雖然復制一個目錄是文件操作的基本功能.但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”完成目錄的復制.PHP編程
《PHP教程:PHP遞歸復制、移動目錄的自定義函數分享》是否對您有啟發,歡迎查看更多與《PHP教程:PHP遞歸復制、移動目錄的自定義函數分享》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/14018.html