on
파일 읽기
파일 읽기
■파일 처리
파일이란 의미있는 정보를 담고 있으며, 이름을 가지고 있는 저장 장치상의 논리적인 단위를 의미
PHP에서는 데이터를 파일에 저장할 수도 있으며, 파일로부터 데이터를 읽어 들일 수도 있다.
■파일 처리 과정
· 파일 읽기
1. 파일 열기, 열리지 않으면 종료
2. 파일에서 데이터 읽기
3. 파일 닫기
· 파일 쓰기
1. 파일 열기, 파일이 없으면 생성
2. 파일에 데이터 쓰기
3. 파일 닫기
ex) 회원 가입을 위한 간단한 form 예제
이름 : 성별 : 여자 남자 이메일 :
위의 예제를 통해 사용자가 입력한 회원 가입 정보를 서버 측에서 처리하는 PHP 스크립트 예제
$name = $_POST["name"]; // 전송받은 데이터 대입 $gender = $_POST["gender"]; $email = $_POST["email"]; echo "이름 : ".$name.""; // 데이터 출력 echo "성별 : ".$gender.""; echo "이메일 : ".$email;
■파일 열기
fopen() : 파일을 열 수 있다.
첫 번째 인수로 열 파일의 주소를 전달하고, 두 번째 인수로 파일에 대한 접근 권한을 명시하는 파일 모드를 전달한다.
파일 모드 설명 r 파일을 읽기 전용으로 열고, 파일 포인터는 파일의 시작 부분에 위치 r+ 파일을 읽고 쓰기위해 열고, 파일 포인터는 파일의 시작 부분에 위치 w 파일을 쓰기 전용으로 열고, 파일 포인터는 파일의 시작 부분에 위치
만약 파일이 존재하면 덮어쓰고, 파일이 없다면 새로 생성 w+ 파일을 읽고 쓰기 위해 열고, 파일 포인터는 파일의 시작 부분에 위치
만약 파일이 존재하면 덮어쓰고, 파일이 없다면 새로 생성 a 파일을 쓰기 전용으로 열고, 파일 포인터는 파일의 끝부분에 위치
만약 파일이 존재하면 이어쓰고, 파일이 없다면 새로 생성 a+ 파일을 읽고 쓰기위해 열고, 파일 포인터는 파일의 끝부분에 위치
만약 파일이 존재하면 이어쓰고, 파일이 없다면 새로 생성 x 파일을 쓰기 전용으로 열고, 파일 포인터는 파일의 시작 부분에 위치
만약 파일이 존재하면 false를 반환하고 오류를 발생시킴 x+ 파일을 읽고 쓰기위해 열고, 파일 포인터는 파일의 시작 부분에 위치
만약 파일이 존재하면 false를 반환하고 오류를 발생시킴 c 파일을 쓰기 전용으로 열고, 파일 포인터는 파일의 시작 부분에 위치
만약 파일이 없다면 새로 생성하고, 파일이 존재하면 파일을 덮어쓰지도 않고 오류를 발생시키지 않음 c+ 파일을 읽고 쓰기위해 열고, 나머지는 'c'와 같음
윈도우 시스템에서는 위와 같은 파일 모드 뒤에 't'와 'b'플래그를 추가하여 해당 파일의 텍스트 모드와 바이너리 모드를 명시할 수 있다.
파일 모드에 't'플래그를 추가하면, 해당 파일을 텍스트 모드로 열게된다.
텍스트 모드로 열린 파일은 파일 내부에 존재하는 줄 바꿈 문자('
', '\r
')를 해석하여 실제로 줄 바꿈된 상태로 전달
파일 모드에 'b'플래그를 추가하면 해당 파일은 바이너리 모드로 열게된다.
바이너리 모드로 열린 파일은 파일 내부에 존재하는 줄 바꿈 문자를 해석하지 않고 그대로 전달
※ fopen()을 사용하여 파일을 열 때 서로 다른 운영체제와 PHP 버전 간의 이식성을 고려하여 항상 'b'플래그를 추가하는 것이 좋다.
ex) list.txt 파일을 쓰기 전용으로 연 후, 파일 포인터를 파일의 끝부분에 위치시키는 예제
$fp = fopen("list.txt", 'a');
■파일 읽기
파일의 데이터를 읽기 위한 함수들
1. fgets()
2. fgetc()
3. readfile()
■fgets()
해당 파일에서 데이터를 한 번에 한 줄씩 읽어들인다.
파일 포인터가 파일의 끝에 도달하거나, 줄 바꿈 문자를 만날 때까지 계속 수행한다.
$fp = fopen("list.txt", 'r'); // list.txt 파일을 읽기 전용으로 열고 반환된 파일 포인터를 $fp에 저장함. while(!feof($fp)){ // 파일의 끝까지 $member = fgets($fp); // 한 줄씩 $member 변수에 저장하고 echo $member.""; // 출력함. }
feof() : 전달받은 파일 포인터가 파일의 끝에 도달하면, true를 반환
■fgetc()
해당 파일에서 데이터를 한 번에 한 글자씩 읽어들인다.
전달받은 파일 포인터가 가리키는 문자를 반환
$fp = fopen("list.txt", 'r'); // list.txt 파일을 읽기 전용으로 열고 반환된 파일 포인터를 $fp에 저장 while(!feof($fp)){ // 파일의 끝까지 $char = fgetc($fp); // 한 글자씩 $char 변수에 저장 if($char == "
") // 출력 $char = ""; if(!feof($fp)) echo $char; }
※ fgetc()는 바이너리 데이터를 안전하게 처리할 수 있다.
■readline()
해당 파일에서 데이터를 한 번에 모두 읽어들인다.
전달받은 파일 포인터가 가리키는 파일의 데이터를 모두 읽은 후, 출력 버퍼에 저장
echo readfile("list.txt");
■파일 닫기
fclose() : 파일을 닫는다.
fclose($fp);
from http://woong971.tistory.com/80 by ccl(A) rewrite - 2021-11-04 12:00:52