이제 본격적으로 파일을 사용하는 방법을 배워보도록 하겠습니다.
먼저 파일의 내용을 읽어서 화면에 출력하는 방법입니다.
// 파일을 읽기로 연다.
$fp = fopen("./data/16_1.txt", "r");
// 파일의 내용을 1000자를 읽어와 $a 에 넣는다.
$a = fread($fp, 1000);
// $a를 출력
echo $a;
//파일을 닫는다.
fclose($fp);
?>
먼저 파일을 여는 함수 fopen 입니다.
파일명 - 절대경로나 상대경로를 포함한 파일명
여는 방법 -
r : 읽기 전용으로 엽니다. 파일 포인터를 제일 앞에 놓습니다.
r+ : 읽기 쓰기가 가능한 상태로 엽니다. 파일 포인터를 제일 앞에 놓습니다.
w : 쓰기 전용으로 엽니다. 파일 포인터를 제일 앞에 놓습니다. 파일크기를 0으로 만듭니다. 파일이 없으면 만듭니다.
w+ : 읽기 쓰기가 가능한 상태로 엽니다. 파일 포인터를 제일 앞에 놓습니다. 파일크기를 0으로 만듭니다. 파일이 없으면 만듭니다.
a : 쓰기 전용으로 엽니다. 파일 포인터를 파일의 끝에 놓습니다. 파일이 없으면 만듭니다.
a+ : 읽기 쓰기가 가능한 상태로 엽니다. 파일 포인터를 파일의 끝에 놓습니다. 파일이 없으면 만듭니다.
[fopen 사용법]
$fp = fopen("./data/16_1.txt", "r");
현재디렉토리 하위의 data 디렉토리에 있는 16_1.txt 파일을 읽기 전용으로 읽어 $fp 에 넣습니다. 이때 fp 에 저장된것은 일반적인 내용이 아니라 바로 출력 할 수가 없습니다.
$a = fread($fp, 1000);
파일 내용중 1000 자를 읽어 $a 에 넣습니다.
echo $a;
$a 를 화면에 출력합니다.
fclose($fp);
파일을 닫습니다.
이처럼 출력을 하였습니다.
그런데 줄바꿈이 안된것을 볼수 있습니다.
일반적인 문서에서 줄바꿈은 \n 이라는 보이지 않는 문자를 사용합니다. 이 문자는 화면상에서는 어떠한 동작도 하지 않기 때문에 줄바꿈 태그인 <br> 로 바꿔주어야 합니다.
이런 명령어가 nl2br() 함수입니다.
다음은 줄바꿈한 소스와 실행결과입니다.
// 파일을 읽기로 연다.
$fp = fopen("./data/16_1.txt", "r");
// 파일의 내용을 1000자를 읽어와 $a 에 넣는다.
$a = fread($fp, 1000);
// $a를 출력
echo nl2br($a);
//파일을 닫는다.
fclose($fp);
?>
이번에는 파일을 열어 줄별로 읽어 표시하는 소스입니다.
// 파일을 읽기로 연다.
$fp = fopen("./data/16_1.txt", "r");
// 파일의 끝이 아닐때는 $i 를 1부터 1씩 증가하면서 반복
for ($i=1;!feof($fp);$i++) {
// 파일의 내용을 한줄씩 1000자를 읽어와 $a 라는 변수에 넣는다.
$a = fgets($fp, 1000);
// $a 를 출력한다.
echo $i."번째 줄 : ".$a."<br/>";
}
//파일을 닫는다.
fclose($fp);
?>
16_2.php 에 사용한 fread 는 지정한 글자수 만큼 파일 전체에서 읽는 반면 여기서 사용한 fgets 는 지정한 글자수 만큼 한줄에서 읽어 옵니다.
그리고 feof 는 파일의 끝인지 아닌지를 true 나 false 로 결과를 알려주는 함수입니다.
이번에는 파일을 생성해서 내용을 적어 넣는 소스입니다.
// 파일을 쓰기로 연다.
$fp = fopen("./data/16_2.txt", "w");
$a = "파일 내용 쓰기 예제";
// 파일에 $a를 적어 넣는다.
fwrite($fp, $a);
//파일을 닫는다.
fclose($fp);
// 파일을 읽기로 연다.
$fp = fopen("./data/16_2.txt", "r");
// 파일의 내용을 1000자를 읽어와 $a 에 넣는다.
$a = fread($fp, 1000);
// $a를 출력
echo $a;
//파일을 닫는다.
fclose($fp);
?>
fopen 시 파일이 없으므로 새로 만들게 됩니다.
fwrite 는 파일에 내용을 적어 넣는 함수 입니다. 위치는 파일에서의 위치(파일 포인터)에 적어 넣게 됩니다.