$fp = fopen("data.txt", "r");
모드 |
설명 |
---|---|
'r' |
읽기 전용. 파일이 있어야 함 |
'w' |
쓰기 전용. 파일이 없으면 생성, 있으면 내용 삭제 |
'a' |
쓰기 전용. 파일 끝에 추가. 파일이 없으면 생성 |
'x' |
쓰기 전용. 새 파일만. 이미 있으면 실패 |
'r+' |
읽기/쓰기. 파일이 있어야 함 |
'w+' |
읽기/쓰기. 파일을 새로 만듬 (내용 삭제) |
'a+' |
읽기/쓰기. 파일 끝에 추가. 없으면 생성 |
$fp = fopen("data.txt", "w");
fwrite($fp, "Hello, world\n");
fclose($fp);
파일이 없으면 생성됨
fwrite()는 파일 포인터 위치에 데이터를 씀
$fp = fopen("data.txt", "r");
while (!feof($fp)) {
$line = fgets($fp);
echo $line;
}
fclose($fp);
$fp = fopen("data.txt", "r");
$content = fread($fp, filesize("data.txt"));
fclose($fp);
$lines = file("data.txt");
foreach ($lines as $line) {
echo $line;
}
$content = file_get_contents("data.txt");
echo $content;
if (file_exists("data.txt")) {
echo "파일이 존재합니다";
}
unlink("data.txt");
rename("oldname.txt", "newname.txt");
fclose($fp);
파일을 열었으면 항상 닫는 것이 좋습니다. (자원 누수 방지)
chmod("data.txt", 0644); // 퍼미션 변경 (Linux/Unix)
if (is_readable("data.txt")) {
echo "읽기 가능";
}
다중 사용자 환경에서는 파일 잠금이 필요할 수 있습니다.
$fp = fopen("data.txt", "r+");
if (flock($fp, LOCK_EX)) {
fwrite($fp, "추가 내용");
flock($fp, LOCK_UN);
}
fclose($fp);
모드 |
설명 |
---|---|
LOCK_SH |
공유 잠금 (읽기 전용) |
LOCK_EX |
배타 잠금 (쓰기용) |
LOCK_UN |
잠금 해제 |
mkdir("new_folder");
rmdir("new_folder");
$dir = opendir("target_folder");
while (($file = readdir($dir)) !== false) {
echo $file . "<br>";
}
closedir($dir);
$log = "[" . date("Y-m-d H:i:s") . "] 사용자 접속\n";
file_put_contents("access.log", $log, FILE_APPEND);
file_put_contents()는 쓰기와 생성, 덮어쓰기 등을 간단하게 처리
FILE_APPEND를 지정하면 기존 내용 뒤에 덧붙임
$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() |