IMG-LOGO
공지사항 :

PHP 파일 제어(file handling)

lmkfox - 2025-08-03 06:25:33 23 Views 0 Comment

1. 파일 열기 (fopen)

$fp = fopen("data.txt", "r");

주요 모드 종류

모드

설명

'r'

읽기 전용. 파일이 있어야 함

'w'

쓰기 전용. 파일이 없으면 생성, 있으면 내용 삭제

'a'

쓰기 전용. 파일 끝에 추가. 파일이 없으면 생성

'x'

쓰기 전용. 새 파일만. 이미 있으면 실패

'r+'

읽기/쓰기. 파일이 있어야 함

'w+'

읽기/쓰기. 파일을 새로 만듬 (내용 삭제)

'a+'

읽기/쓰기. 파일 끝에 추가. 없으면 생성


2. 파일 쓰기 (fwrite)

$fp = fopen("data.txt", "w");
fwrite($fp, "Hello, world\n");
fclose($fp);

  • 파일이 없으면 생성됨

  • fwrite()는 파일 포인터 위치에 데이터를 씀


3. 파일 읽기

1) 

fgets()

 — 한 줄씩 읽기

$fp = fopen("data.txt", "r");
while (!feof($fp)) {
    $line = fgets($fp);
    echo $line;
}
fclose($fp);

2) 

fread()

 — 지정한 길이만큼 읽기

$fp = fopen("data.txt", "r");
$content = fread($fp, filesize("data.txt"));
fclose($fp);

3) 

file()

 — 전체 파일을 배열로 읽기

$lines = file("data.txt");
foreach ($lines as $line) {
    echo $line;
}

4) 

file_get_contents()

 — 파일 전체를 문자열로 읽기

$content = file_get_contents("data.txt");
echo $content;


4. 파일 존재 여부 확인

if (file_exists("data.txt")) {
    echo "파일이 존재합니다";
}


5. 파일 삭제

unlink("data.txt");


6. 파일 이름 변경 / 이동

rename("oldname.txt", "newname.txt");


7. 파일 닫기

fclose($fp);

파일을 열었으면 항상 닫는 것이 좋습니다. (자원 누수 방지)


8. 파일 권한 확인 및 설정

chmod("data.txt", 0644); // 퍼미션 변경 (Linux/Unix)
if (is_readable("data.txt")) {
    echo "읽기 가능";
}


9. 파일 잠금

다중 사용자 환경에서는 파일 잠금이 필요할 수 있습니다.

$fp = fopen("data.txt", "r+");
if (flock($fp, LOCK_EX)) {
    fwrite($fp, "추가 내용");
    flock($fp, LOCK_UN);
}
fclose($fp);

모드

설명

LOCK_SH

공유 잠금 (읽기 전용)

LOCK_EX

배타 잠금 (쓰기용)

LOCK_UN

잠금 해제


10. 디렉터리 제어

디렉터리 생성/삭제

mkdir("new_folder");
rmdir("new_folder");

디렉터리 열기 및 파일 목록 읽기

$dir = opendir("target_folder");
while (($file = readdir($dir)) !== false) {
    echo $file . "<br>";
}
closedir($dir);


11. 실전 예시: 파일에 로그 저장

$log = "[" . date("Y-m-d H:i:s") . "] 사용자 접속\n";
file_put_contents("access.log", $log, FILE_APPEND);

  • file_put_contents()는 쓰기와 생성, 덮어쓰기 등을 간단하게 처리

  • FILE_APPEND를 지정하면 기존 내용 뒤에 덧붙임


12. 에러 처리

$fp = @fopen("data.txt", "r");
if (!$fp) {
    die("파일을 열 수 없습니다");
}

@ 연산자는 오류 메시지를 숨깁니다. 실무에서는 try-catch 또는 error_log()와 함께 처리하는 것이 좋습니다.


요약

작업

함수

파일 열기

fopen()

파일 닫기

fclose()

파일 쓰기

fwrite(), file_put_contents()

파일 읽기

fgets(), fread(), file_get_contents()

파일 존재 확인

file_exists()

파일 삭제

unlink()

파일 이름 변경

rename()

디렉터리 작업

mkdir(), rmdir(), opendir() 등

파일 잠금

flock()

읽기/쓰기 권한 확인

is_readable(), is_writable()


댓글