>  기사  >  백엔드 개발  >  PHP는 폴더와 파일을 이동합니다

PHP는 폴더와 파일을 이동합니다

WBOY
WBOY원래의
2016-08-08 09:23:063042검색
방법 1, 복사+연결 해제 방법내 생각은 이동 = 새로 만들기 + 삭제입니다. 이동 전 대상 디렉터리에 새 폴더를 생성한 후 거기에 파일과 디렉터리를 복사한 후 마지막으로 삭제해 주세요.
코드는 다음과 같습니다 코드 복사

/**
* @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:');//이동하려는 파일 또는 디렉터리의 주소를 여기에 전달

방법 2, 이름 바꾸기 1. 파일의 경우 이름 바꾸기는 다른 드라이브 문자 간에 이동할 수 있습니다.
 代码如下 复制代码


rename("D:/testdir/test","F:/totestdir/mydir");
?>

2. 빈 폴더의 경우 이름 바꾸기는 다른 드라이브 문자 간에도 이동할 수 있습니다. 존재합니다.3. 비어 있지 않은 폴더의 경우 동일한 드라이브 문자로만 이동할 수 있습니다. 그러나 1과 3은 거의 모든 애플리케이션 상황을 처리할 수 있어야 합니다. 코드는 다음과 같습니다 코드 복사 td>


rename("D :/testdir/test","F:/totestdir/mydir");
?>

40M 파일의 경우 복사+연결 해제 방법은 7.6249899864197초가 소요되는 반면, 이름 변경 방법은 0.024738788604736초만 소요되어 300배 더 빠릅니다.예 코드는 다음과 같습니다 td>
코드 복사
 代码如下 复制代码

//定义一个变量,保存文件名
$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");
?>

//저장할 변수 정의 파일 이름
$file = "html/cache.txt";
$rename = "html/renameCache.txt";
//파일 이름을 바꾸려면 rename() 함수를 사용하십시오.
(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으로 문의하세요.