首頁  >  文章  >  後端開發  >  php移動資料夾和文件

php移動資料夾和文件

WBOY
WBOY原創
2016-08-08 09:23:063079瀏覽
方法一,copy+unlink方式我的思路是:移動=新建+刪除。在移動前在目標的目錄新建一個資料夾,然後在把檔案和目錄都複製過去,最後在執行刪除.* /function moveDir($from,$to){1.對於文件,rename可以在不同盤符之間移動.2.對於空文件夾,rename也可以在不同盤符之間移動.
 程式碼如下 複製程式碼
 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

2.對於空文件夾,rename也可以在不同盤符之間移動.但是目標資料夾的父目錄必須存在.3.對於非空資料夾,只能在同一盤符下移動.不過,1和3,應該差不多能夠對付所有的應用情況了.程式碼如下複製程式碼    rename("D:/testdir/test","F:/totestdir/mydir");
?對於一個40M的檔案,copy+unlink方式需要7.6249899864197秒,而rename方式,只需要0.024738788604736,快300倍.例$file = "html/cache.txt";$rename = "html/renameCache.txt";
//定義變數,儲存檔案名稱
//使用rename()函式重新命名一個檔案

if(rename( $file,$rename)==TRUE){
echo "重新命名檔案成功!";
}else{
echo "重新命名檔案失敗!";
}
//使用rename()函數移動檔案,並改名
rename("html/renameCache.txt","html/a/2.txt");
//使用rename()函數重新命名目錄
rename("html","cache");
//使用rename ()函數移動目錄到目標目錄
rename("b","cache/b");
?>




以上就介紹了php移動資料夾和文件,包括了方面的內容,希望對PHP教學有興趣的朋友有幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn