본문 바로가기

웹프로그래밍/PHP

[php] 파일 이동, 복사 함수

반응형

php에서는 copy함수를 이용하여 간단하게 파일을 복사하거나 unlink(또는 delete)함수로 파일을 삭제할 수 있습니다. 이 두 함수는 복사, 삭제에 성공할 경우 true를, 실패하면 오류 코드 메시지를 표시하므로 함수 앞에 @를 붙여 보안 유효성을 높여 주도록 합니다.

bool copy ( string $source , string $dest [, resource $context ] ) (PHP 4, PHP 5)

 copy(원본 파일명, 복사 파일명);
 unlink(삭제 파일명);

대상 파일이 이미 존재하면 덮어 쓰는 점에 주의가 필요합니다. 다음은 파일 복사 예제입니다.

예제 (ex #1

 <?php
 
// test.php파일을 복사본 test.php.bak로 만듭니다.
 
$oldfile 'test.php'
// 원본파일
 
$newfile 'test.php.bak'
// 복사파일

 // 실제 존재하는 파일인지 체크...
 
if(file_exists($oldfile
)) {
      if(!
copy($oldfile$newfile
)) {
            echo 
"파일 복사 실패"
;
      } else if(
file_exists($newfile
)) {
            echo 
"파일 복사 성공"
;
      }
 }
 
?>


다음은 파일 이동 예제입니다.

예제 (ex #2

 <?php
 
// test.php파일을 test.txt로 만듭니다.
 
$oldfile 'test.php'
// 원본파일
 
$newfile 'test.txt'
// 복사파일

 // 실제 존재하는 파일인지 체크...
 
if(file_exists($oldfile
)) {
      if(!
copy($oldfile$newfile
)) {
            echo 
"파일 복사에 실패하였습니다."
;
      } else if(
file_exists($newfile
)) {
            
// 복사에 성공하면 원본 파일을 삭제합니다.
            
if(!@unlink($oldfile
)){
                 if(@
unlink($newfile
)){
                      echo 
"파일이동에 실패하였습니다."
;
                 }
            }
      }
 }
 
?>


단순히 파일이름만 변경 원할 경우 rename함수를 이용하면 됩니다. 이 함수는 파일(또는 폴더)의 이름을 변경합니다. 성공하면 true를, 실패하면 false를 반환합니다.

bool
rename ( string $oldname , string $newname [, resource $context ] ) (PHP 4, PHP 5)

예제 (ex #3

 <?php
 
// dir1 폴더를 dir2폴더로 이름을 변경합니다.
 
if(rename("dir1","dir2"
)){
     echo 
"이름 변경 성공"
;
 }

 
// file1.php을 file2.php로 이름을 변경합니다.
 
if(rename("file1.php","file2.php"
)){
     echo 
"이름 변경 성공"
;
 }
 
?>


단순히 copy, unlink함수를 이용하지 않고, fopen함수로 표현이 가능합니다. 다음이 그 좋은 예입니다.

예제 (ex #4

 <?php
 
// test.php파일을 복사본 test.php.bak로 만듭니다.
 
$oldfile 'test.php'
// 원본파일
 
$newfile 'test.php.bak'
// 복사파일

 
if(file_exists($oldfile
)) {
      
$data file_get_contents($oldfile
);
      
$fp fopen($newfile'w+'
);
      if(
is_resource($fp
)){
            
fputs($fp$data
);
      }
      
fclose($fp
);
 }
 
?>


예제 (ex #5

 <?php
 
// test.php파일을 복사본 test.php.bak로 만듭니다.
 
$oldfile 'test.php'
// 원본파일
 
$newfile 'test.php.bak'
// 복사파일

 
if(file_exists($oldfile
)) {
     
$fold fopen($oldfile,'r'
); 
     if(
is_resource($fold
)){
            
$fnew fopen($newfile,'w+'
); 
            
$len stream_copy_to_stream($fold,$fnew
); 
            
fclose($fold
); 
            
fclose($fnew
); 
     }
 }
 
?>

 

 

출처 : http://blog.habonyphp.com/62#.VS3Qm2ccS70

 

반응형

'웹프로그래밍 > PHP' 카테고리의 다른 글

PHP에서 csv로 저장시 연락처 0 삭제 방지  (0) 2015.10.23
정규식 정리  (0) 2015.06.14
PHP + jQuery AJAX Upload  (0) 2015.04.10
PHP XML CDATA Parsing  (0) 2015.04.10
PHP DOMDocument getting Attribute of Tag  (0) 2015.04.10