[PHP] fopen 옵션 정리

[PHP] fopen 옵션 정리

기본적으로 fopne 옵션을 사용할때 사용하는 옵션을 정리해 놓은것입니다.
간단하게 쓰이지만 매번 잊어 먹어서 한번 정리를 해 놓습니다.

“r” : 읽기 전용 모드. 파일이 없으면 NULL return.
“w” :쓰기 전용 모드. 파일이 없으면 생성되고 있으면 내용이 없어진다.
“a” : append모드. 파일이 없으면 생성. 이미 존재하는 파일 끝부분에 file pointer가 위치하게 되며 이 위치부터 뒷쪽으로만 write가능. 읽기는 불가능. fseek등으로 이 부분보다 앞으로 file pointer를 이동시키면 어떻게 될까 ? 아래 내용으로 봐서는 fseek등으로 file pointer를 이동하여도 이와 상관없이 파일 끝부분에 write가 되는 것으로 생각됨.

“r+” : 읽고 쓰기 모드, 파일이 없으면 NULL return.
“w+” : 읽고 쓰기 모드 단, 파일이 없으면 만들고 있으면 기존 내용을 지움. write를 먼저 한 후 동일 파일 포인터로 읽기 수행이 필요한 경우 사용. 보통은 읽기 전용, 혹은 쓰기 전용으로 fopen하므로 w+가 필요한 일은 별로 없을 듯.
“a+” : append모드, 읽고 쓰기 가능. 파일이 이미 존재할 경우 그 파일의 끝부분에서부터 추가된 내용을 쓴다. 읽기는 fseek로 지정한 file pointer위치에서 가능하나 쓰기는 파일 끝부분에서만 가능.

위 방법 외에 rb, rt 등의 붙는 경우도 있는데 아래의 설명을 참조 하면 됩니다.

b : binary
t : text 를 뜻 합니다.
b, t의 다른 점은 b로 파일을 쓸 경우 text에디터로 열면 알 수 없는 문자료 표기된다고 보시면 되고, t는 일반 text파일로 써 사람이 저장된 데이터를 읽을 수 있는 그대로 볼 수 있습니다.
물론 b로 파일을 저장했다면, 반드시 b모드로 파일을 읽어야만 합니다. text mode일 경우도 동일하고요.

즉, 각 설명은 아래와 같이 볼 수 있습니다.

a) “r”와 “rb”
– r : 오직 파일을 읽기 위해서 개방(해당 파일을 열기만 할 때)
– rb : 파일을 읽기 위해서 개방 그리고 2진모드(binary mode)로 하라

b) “rb” 와 “r+b”
– rb : 파일을 읽기 위해서 개방하는데 2진모드(binary mode)로 하라.
– r+b : 파일을 읽고 쓰기위해서 개방하는데 2진모드로 하라.

c) “w”와 “wb”
– w : 파일을 쓰기위해 개방(오직 쓰기)
– wb: 파일을 쓰기위해 개방하고 binary mode로 개방하라.

d)”ab”와 “a+b”
ab : w모드와 달리,지정해 준 파일이 존재하면 data를 지우지 않고 파일의 끝에서 부터 추가하고 binary mode로 한다.
a+b : 파일을 읽고 쓰기위해 개방하는데 지정해 준 파일이 존재 시 파일 끝에서 부터 데이터를 추가하며 binary mode로 한다.