利用PHP怎么對遞歸進行復制?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

雖然復制一個目錄是文件操作的基本功能。但PHP中也沒有給出特定的函數(shù),同樣需要自定義一個遞歸函數(shù)實現(xiàn)。要復制一個包含多個子目錄的目錄,將涉及文件的復制、目錄創(chuàng)建等操作。復制一個文件可以通過PHP提供的copy()函數(shù)完成,創(chuàng)建目錄可以使用mkdir()函數(shù)。定義函數(shù)時,首先對源目錄進行遍歷,如果遇到的是普通文件,直接使用copy()函數(shù)進行復制。如果遍歷時遇到一個目錄,則必須建立該目錄,然后再對該目錄下的文件進行復制操作,如果還有子目錄,則使用遞歸重復操作,最終將整個目錄復制完成。自定義的遞歸函數(shù)復制目錄的程序代碼如下所示:
復制代碼 代碼如下:
<?php
//自定義函數(shù)遞歸的復制帶有多級子目錄的目錄
function copyDir($dirSrc,$dirTo){
if(is_file($dirTo)){ //如果目標不是一個目錄則退出
echo "目標不是目錄不能創(chuàng)建!!";
return; //退出函數(shù)
}
if(!file_exists($dirTo)){ //如果目標不是一個目錄則退出
mkdir($dirTo); //創(chuàng)建目錄
}
if($dir_handle = @opendir($directory)){ //打開目錄,并判斷是否能成功打開
while($filename = readdir($dir_handle)){ //循環(huán)遍歷目錄下的所有文件
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); //關閉文件資源
}
}
//測試函數(shù),將目錄“phpMyAdmin”復制到“D:/admin”
copyDir("phpMyAdmin","D:/admin");
?>
從安全和跨平臺等方面考慮,盡量不要去調用操作系統(tǒng)的SHELL命令“cp-a”完成目錄的復制。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設公司,的支持。
網(wǎng)站名稱:利用PHP怎么對遞歸進行復制-創(chuàng)新互聯(lián)
分享鏈接:http://www.chinadenli.net/article28/djdjjp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、軟件開發(fā)、外貿建站、App開發(fā)、做網(wǎng)站、網(wǎng)站內鏈
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)