1. 존재 유무 확인
파일이나 디렉토리가 존재하는지 안하는지 확인하는 함수입니다.
is_file() # 파일의 존재 유무 확인
is_dir() # 디렉토리의 존재 유무 확인
file_exists() # 파일 혹은 디렉토리의 존재 유무 확인
test1.php 라는 파일을 만들어 놓은 상태입니다.
<?php
var_dump(is_dir('test1.php'));
echo "<br/>";
var_dump(is_file('test1.php'));
echo "<br/>";
var_dump(file_exists('test1.php'));
?>
존재한다면 true, 존재하지 않으면 false를 리턴합니다.
2. 파일 열기/닫기
파일을 읽고 수정하고 삭제하기 위해서는 먼저 파일을 열어야 합니다.
파일을 열 땐 다음과 같은 함수를 사용합니다.
fopen(파일명, 파일모드)
뒤에 매개변수를 하나 더 얹어서 context 라는 부분을 추가할 수 있지만 그 부분은 나중에,,
일단 기본적으론 위와 같이 사용합니다.
파일모드는 파일을 어떤식으로 열고 어떤 작업이 가능한지 설정합니다. 다음과 같습니다.
r : 읽기전용
w : 쓰기전용(파일존재 시 내용삭제 / 파일없을 시 생성)
x : 쓰기전용(파일존재 시 에러 / 파일없을 시 생성)
a : 쓰기전용(파일존재 시 맨 끝으로 이동 / 파일없을 시 생성)
c : 쓰기전용(파일존재 시 맨 처음으로 이동 / 파일없을 시 생성)
r+ : 읽기/쓰기
w+ : 읽기/쓰기(파일존재 시 내용삭제 / 파일없을 시 생성)
x+ : 읽기/쓰기(파일존재 시 에러 / 파일없을 시 생성)
a+ : 읽기/쓰기(파일존재 시 맨 끝으로 이동 / 파일없을 시 생성)
c+ : 읽기/쓰기(파일존재 시 맨 처음으로 이동 / 파일없을 시 생성)
r 모드를 제외하고 나머지 모드는 파일이 존재하지 않으면 생성합니다.
'+' 가 붙으면 읽기와 쓰기가 가능한 모드라고 생각하면 되겠습니다.(리눅스 권한에서 rw-)
파일을 사용하기 위해 연 후에는 반드시 닫아야 합니다. 이때 fclose를 사용합니다.
fclose()
fopen() 함수로 생성한 리소스를 fclose() 함수의 인자로 넘겨주며 파일이 닫힙니다.
무슨말이냐면,
<?php
$a = fopen('test.txt', 'r');
...
...
fclose($a);
?>
test.txt 를 읽기전용모드로 열었으며 그 내용을 $a 변수에 담았습니다.
중간에 어떠한 작업을 하고 닫을 땐 fopen 함수의 내용 자체를 담은 변수 $a를 fclose인자값으로 주어 닫는겁니다.
3. 파일의 내용을 읽기
파일을 연 후에는 내용을 읽거나 쓸 수 있습니다.
읽거나 쓰는 함수들의 인자는 fopen() 함수로 열어놓은 리소스를 받습니다.
그러니까,
$a = fopen('test.txt', 'r');
이런식으로 변수에 담는 행위는 모두 읽거나 쓰기를 위한 함수를 사용할 때 인자값으로 넣기 위함입니다.
내용을 읽는 함수는 다양한데 하나씩 보겠습니다.
- fgetc
fgetc()는 파일에서 한 글자만 리턴합니다.
- fgets
fgets()는 파일에서 한 줄씩 리턴합니다.
- fread
위 두 개의 함수들은 fopen함수로 열어놓은 리소스만을 인자로 받지만, fread()는 fopen함수로 열어놓은 리소스와 int $length 를 매개변수로 받습니다.
뒤에 있는 값 만큼 읽을 때 사용합니다.
간단히 코드로 보겠습니다.
<?php
$a = fopen('test.txt', 'r');
$b = filesize('test.txt');
echo fread($a, $b)."<br/>";
echo $b;
?>
test.txt 파일을 29라는 길이 만큼 읽어옵니다.
4. 파일에 내용 쓰기
- fwrite
fwrite(fopen리소스, 입력할 내용, 얼마만큼 입력 할 것인가)
이때 입력되는 위치는 fopen함수의 파일모드에 따라 달라집니다.
w,x,c의 경우 파일의 앞부분, a의 경우 파일의 끝부분, 파일을 읽어들였다면 읽은 그 위치입니다.
5. 간단히 파일을 읽고 쓰기
파일을 읽고 쓰기 위해서는 fopen으로 열고 fclose로 닫고 중간에 읽고 쓰거나 할 함수를 사용해야 합니다.
이런 번거로움을 피하기 위해 간단하게 사용할 수 있는 함수가 있습니다.
- file_get_contents()
file_get_contents(파일명, 경로, 특정 스트림, 읽을 위치, 읽을 내용의 길이)
이 함수는 5개의 매개변수를 갖습니다.
첫 번째는 파일명을 입력합니다.
두 번째는 특정 경로를 포함시키는 것을 의미합니다. 즉, 현재 파일 기준 뿐 아니라 입력된 경로도 찾습니다.
세 번째는 fopen()함수와 같이 다른 stream을 사용할 때 특정 stream을 사용합니다.
네 번째는 파일을 읽을 위치를 설정하며, 다섯 번째는 읽을 내용의 길이를 설정합니다.
- file_put_contents()
file_put_contents(파일명, 저장할 내용, 저장할 방법, 스트림)
<?php
$filename = 'test.txt';
$content = file_get_contents($filename);
echo $content."<br/>";
echo nl2br($content);
?>
6. 기타 파일 정보
- filesize()
파일의 크기를 리턴
- basename()
경로에서 파일명을 리턴
- dirname()
디렉토리명을 리턴
'php' 카테고리의 다른 글
[HTML Form을 통한 데이터 전송] POST, GET (0) | 2021.08.27 |
---|---|
[php 내장함수] 네트워크 관련 함수 (0) | 2021.08.26 |
[php 내장함수] 배열 관련 함수 (0) | 2021.08.24 |
[php 내장함수] 날짜 관련 함수 (0) | 2021.08.23 |
[php 내장함수] 문자 관련 함수 (0) | 2021.08.22 |