/** * @parammoveDir 파일 및 디렉터리 잘라내기 * @param string $to 대상 파일 경로 * @param string $from 소스 파일 경로 */ function moveDir($from,$to){ if(! is_dir ($from)){//$from 소스 파일 디렉터리가 존재하는지 확인 return false; }
代码如下 |
复制代码 |
/** * @parammoveDir 剪切文件和目录 * @param string $to 目标文件路径 * @param string $from 源文件路径 */ function moveDir($from,$to){ if(!is_dir($from)){//判断$from源文件目录是不是存在 return false; }
$from = rtrim(str_replace(‘//’,'/’,$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);//删除所有文件 } @rmdir($subFrom);//删除所有的目录 } return true; } moveDir(‘C:/Users/Administrator/Desktop/0704′,’e:’);//在这传递你要移动的文件或者目录的地址
|
$from = rtrim(str_replace('//','/', $ from), '/');//Linux에서 호환되도록 모든 / 기호를 /로 변환합니다. 창 아래의 두 기호가 모두 허용되기 때문입니다. $files = scandir($from);//List The 소스 파일 디렉터리의 파일과 폴더는 배열 형식으로 $files에 저장됩니다. /* $files의 출력: Array( [0 ] => .. [2] => a [3] => c [5] => dir.php [ 7] => dir2 [8] => dir2.php [9] => function_file.php [10] => homework.php ) scandir 함수가 2개의 중복 값을 출력하는 것을 볼 수 있습니다. : [0] => . [1] => ..여기서 if를 작성하면 유용하지 않습니다. */ foreach($files as $file) $의 경우 파일 배열을 탐색하여 배열의 폴더와 파일을 쉽게 복사하고 삭제할 수 있습니다. if(in_array($file, array('.','..'))){// array('.' ,'..')은 . 및 ..만 사용하여 새 배열을 만들고 $file을 검색하여 . 및 .. 값이 있는지 확인합니다. 계속; } $subFrom = $from .' /'.$file;//탐색한 폴더 또는 파일 이름을 새 경로로 변경 $subTo = $to.'/'.$file; if(is_dir ($subFrom)){ @mkdir($subTo);//$subFrom이 디렉터리인지 확인합니다. 디렉터리인 경우 대상 디렉터리 아래에 새 디렉터리를 생성합니다. moveDir($subFrom, $subTo) ;//재귀적으로 실행합니다. 새 디렉토리. }else{//디렉토리가 아닌 경우 파일을 직접 복사하세요. 복사 후 파일을 삭제하세요. copy($subFrom, $subTo); unlink($subFrom);//Delete 모든 파일 } @rmdir($subFrom);//모든 디렉터리 삭제 } return true; } moveDir('C:/Users/Administrator/Desktop/ 0704′ ,'e:');//이동하려는 파일 또는 디렉터리의 주소를 여기에 전달
|