if(!is_dir($from)){//判斷$from來源檔案目錄為不是存在 return false; }
$from = rim(strfrom_strin(str_ //','/',$from), '/');//為了在linux上相容,我們把/符號全部轉換成/因為windows下面2個符號都可以的. $files = scandir($ from);//列出來源檔案目錄的檔案和資料夾,並以陣列的形式存入$files。
/*
$files的輸出結果:
Array ( [0] => . [1] => .. [2] => a [3] => b [4] => c [5] => dir [6] => dir.php [7] => dir2 [8] => dir2.php [9] => function_file.php [10] => homework.php ) 可以看到scandir這個函數會輸出2個多餘的值: [0] => . [1] => ..在這對我們木有用.寫一個if幹掉他們。 */ foreach($files as $file){//對$files數組進行遍歷,方便對數組裡面的資料夾和檔案進行複製和刪除. if(in_array($file, array('.', '..'))){// array('.','..')新建了一個只有.和..的數組,並且查找$file裡面知否有.和..這2個值 continue ; } $subFrom = $from.'/'.$file;//把遍歷後的資料夾或檔案名稱變成新的路徑 $subTo = $to.'/'.$file;
if(is_dir($subFrom)){ @mkdir($subTo);//判斷$subFrom是不是目錄,如果是目錄就在目標的目錄下面,新建一個目錄 moveDir($subFrom, $subTo); //遞歸執行新建目錄。 }else{//不是目錄的話,就直接複製檔案.複製完就刪除檔案. copy($subFrom, $subTo); unlink($subFrom);//刪除所有檔案 } } dir($ subFrom);//刪除所有的目錄 } return true; } moveDir('C:/Users/Administrator/Desktop/0704′,'e:');//在這傳遞你要移動的檔案或目錄的位址
方法二,rename
| 1.對於文件,rename可以在不同盤符之間移動.