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