워누입니다!
오늘은 어제 포스팅한 파일 쓰기에 이어서 파일을 읽는 방법을 포스팅해보고자 합니다!
파일을 작성하는 것 만큼 읽어오는 것도 중요하게 쓰입니다!
이것도 잘 익혀두면 필요할 때마다 유용하게 쓸 수 있거든요ㅎㅎ
txt 파일 쓰는 방법은 어제 포스팅(https://seoneu.tistory.com/20?category=395796)을 참고해주세요!
그럼 거두절미하고, 바로 보여드리겠습니다.
[파일 읽기 소스코드 - filereadTest.php]
<?php
//내용을 읽어올 파일명
$fileName = "fwriteTest.txt";
if(file_exists($fileName)){
//파일 열기
$fp = fopen($fileName, 'r');
if($fp){
//파일 읽기
$fr = fread($fp, filesize($fileName));
if($fr){
//내용 출력
echo $fr;
//파일 닫기
fclose($fp);
} else {
echo "파일 읽기에 실패하였습니다.";
} //end if_fr
} else {
echo "파일 열기에 실패하였습니다.";
} //end if_fp
} else {
echo "파일이 존재하지 않습니다.";
} //end if_fe
?>
이전 포스팅 내용을 확인한 후 위 소스를 보면 이해가 빠를 겁니다!
fopen이 파일 열기 함수였으니 위 소스를 그대로 가져와서 예시를 들게요!
파일 열기 함수[fopen()] : $fp = fopen($fileName, 'r'); // r -> 읽기 권한을 말합니다.
파일 읽기 함수[fread()] : $fr = fread($fp, '불러올 파일의 용량');
파일 용량 확인[filesize()] : filesize('불러올 파일 경로와 파일명');
파일 존재 여부 확인 함수 [file_exists()] : file_exists('파일명');
fread() 함수를 사용하려면 파일 용량을 알아야 하는데 그 용량을 일일이 체크하지 않고 filesize() 함수로 가져올 수 있습니다. (byte 단위로 가져옵니다.) 그리고 읽으려는 파일의 존재 여부를 체크하기 위해 file_exists() 함수를 사용하였습니다. 괄호 안에 파일 명이 존재하면 true를 반환하고, 존재하지 않는다면 false를 반환합니다.
그래서 위 소스를 실행하면 어제 만들어놨던 fwriteTest.txt 파일의 내용을 그대로 읽어옵니다.
.
만약 없는 파일명이나 파일이 존재하지 않는다면 if문이 아닌 else문이 동작하여 다른 결과가 나오니까,
직접 테스트해보시길 바랍니다 ㅎㅎ
.
파일을 읽어오는 함수가 fread만 있는건 아니더라구요!
찾아보니 fgets()라는 함수가 있는데, 파일 내용을 한 라인씩 읽어오는 함수라고 하더라구요.
(이런 것도 몰랐는데 그동안 개발은 어떻게 했니 나레기야..)
.
여튼, 쓰는 방법은 이렇게 쓴다고 합니다.
$fg = fgets($fp, '불러올 용량')
.
이걸 기반으로 소스코드를 아래와 같이 적어보았습니다.
[파일 한줄씩 읽기 소스코드 - fgetsTest.php]
<?php
//내용을 읽어올 파일명
$fileName = "fgetstext.txt";
if(file_exists($fileName)){
//파일 열기
$fp = fopen($fileName, 'r');
//파일 용량의 크기가 얼마나 될지 몰라서 filesize() 함수 사용
$readByte = filesize($fileName);
if($fp){
$fg=fgets($fp,$readByte);
echo $fg."<br>";
} //end if_fp
} //end if_fe
?>
[미리 적어놓은 fgetstext.txt, 라인을 구분하기 위해 번호를 적었습니다!]
1 : fgetsTest
2 : 티스토리
3 : 만세!
fgetsTest.php를 실행해봅시다.
정말 한줄만 읽어와서 가져오네요! fread()랑은 다른 용도로 잘 사용할 수 있을 것 같습니다.
이걸 반복문을 돌리면 다 읽어올 수 있을것 같네요!
fgetsTest.php를 수정해보겠습니다.
[fgetsTest.php, 반복문 추가]
<?php
//내용을 읽어올 파일명
$fileName = "fgetstext.txt";
if(file_exists($fileName)){
//파일 열기
$fp = fopen($fileName, 'r');
//파일 용량의 크기가 얼마나 될지 몰라서 filesize() 함수 사용
$readByte = filesize($fileName);
if($fp){
// 수정한 부분 -> while을 이용한 반복문을 돌림.
// fgets() 함수 사용 시, 더이상 불러올 용량이 없으면 false 반환!
while($fg=fgets($fp,$readByte)){
echo $fg."<br>";
} // end while_fgets
} //end if_fp
} //end if_fe
?>
반복문을 추가했으니 다시 한 번 실행해보겠습니다.
오.. 예상한 그대로 나오니 짧은 코드를 쓰더라도 뭔가 뿌듯하네요ㅋㅋㅋ (이런거에 만족하는 초급개발자란..)
이전 포스팅이나 오늘 포스팅이나 회사에서는 주로 개발한 내용에 대해서 요청-응답 기록을 남기기 위해 로그 파일을 찍고 읽어오도록 소스 코드를 작성할 때가 많을 것입니다. 그러다보니 쉬워 보이는 내용이지만 실제로 많이 쓰이는 함수라고 보시면 될 것 같습니다!
오늘 포스팅은 여기서 마치도록 하겠습니다아~!!
'PHP' 카테고리의 다른 글
[PHP] 폴더 생성하고 삭제하기 (mkdir, rmdir) (0) | 2020.12.06 |
---|---|
[PHP] API 통신할 때 file_get_contents(), curl은 무슨 차이일까? (1) | 2020.10.22 |
PHP로 txt파일에 아무 내용이나 작성해보았습니다! (0) | 2020.09.02 |
PHP 8 출시..? 어떤 것이 달라질까? (1) | 2020.09.01 |
PHP 맛보기 <php.ini , phpinfo() > (0) | 2020.04.25 |