묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
fopen(파일, ''a+'') 이게 뭔가요?
2007.07.16 21:01
http://kr.php.net/manual/kr/function.fopen.php 여기 내용입니다.
--------------------------------------------------------------
'r' - 읽기전용으로 열립니다; 파일포인터를 파일의 맨 앞에 놓습니다.
'r+' - 읽기 쓰기가 가능합니다.; 파일 포인터를 파일의 맨 앞에 놓습니다.
'w' - 쓰기 전용으로 열립니다; 파일 포인터를 파일의 맨 앞에 놓습니다 그리고 파일의 크기를 0으로 만듭니다. 파일이 없으면 만듭니다.
'w+' - 읽기 쓰기가 가능합니다; 파일포인터를 파일의 맨 앞에 놓습니다. 그리고 파일의 크기를0으로 만듭니다. 파일이 없으면 만듭니다.
'a' - 쓰기 전용으로 열립니다; 파일 포인터를 파일의 끝에 놓습니다. 파일이 없으면 만듭니다.
'a+' - 읽기 쓰기가 가능합니다; 파일 포인터를 파일의 끝에 놓습니다. 파일이 없으면 만듭니다.
--------------------------------------------------------------
이렇게 되어 있는데,
r하고 w하고 a는 알겠는데,
방금 fopen(파일,"a+") 또는 fopen(파일,"r+")
이렇게 열어서, fgets(파일) 이런식으로 내용을 받을라니까, 아무것도 안나옵니다.
fopen(파일,"r") 이렇게 여니까, 내용이 보여지던데,
분명히 위에 설명은 "읽기 쓰기가 가능합니다" 라고 하는데,
fgets 대신에 fread를 써도 마찬가지고,
도대체 r+, w+, a+ 이게 어디에, 어떻게 쓰는건지 모르겠습니다.
그래서 여쭤봅니다.
--------------------------------------------------------------
'r' - 읽기전용으로 열립니다; 파일포인터를 파일의 맨 앞에 놓습니다.
'r+' - 읽기 쓰기가 가능합니다.; 파일 포인터를 파일의 맨 앞에 놓습니다.
'w' - 쓰기 전용으로 열립니다; 파일 포인터를 파일의 맨 앞에 놓습니다 그리고 파일의 크기를 0으로 만듭니다. 파일이 없으면 만듭니다.
'w+' - 읽기 쓰기가 가능합니다; 파일포인터를 파일의 맨 앞에 놓습니다. 그리고 파일의 크기를0으로 만듭니다. 파일이 없으면 만듭니다.
'a' - 쓰기 전용으로 열립니다; 파일 포인터를 파일의 끝에 놓습니다. 파일이 없으면 만듭니다.
'a+' - 읽기 쓰기가 가능합니다; 파일 포인터를 파일의 끝에 놓습니다. 파일이 없으면 만듭니다.
--------------------------------------------------------------
이렇게 되어 있는데,
r하고 w하고 a는 알겠는데,
방금 fopen(파일,"a+") 또는 fopen(파일,"r+")
이렇게 열어서, fgets(파일) 이런식으로 내용을 받을라니까, 아무것도 안나옵니다.
fopen(파일,"r") 이렇게 여니까, 내용이 보여지던데,
분명히 위에 설명은 "읽기 쓰기가 가능합니다" 라고 하는데,
fgets 대신에 fread를 써도 마찬가지고,
도대체 r+, w+, a+ 이게 어디에, 어떻게 쓰는건지 모르겠습니다.
그래서 여쭤봅니다.
댓글 6
-
류민혁
2007.07.17 08:02
서기님 강좌를 보시면 이해가 좀 되실듯..;; -
제로저아
2007.07.17 18:04
서기님 강좌 봤는데, [PHP 동영상강의] 19. 파일을 이용한 메모장 만들기 #1
fopen($file, "a+");는 $file의 파일이 없어도 생성되고,
fopen($file, "a");는 $file의 파일이 없으면 안된다고 하시는데,,
$file(의 이름만 있으면) 파일이 없어도 생성되는건,
fopen($file, "a+"); 이거나 fopen($file, "a"); 이거나 마찬가진데요. 방금 테스트해봄... -
제로저아
2007.07.17 18:05
----- 위에 퍼온 설명에서도 "파일이 없으면 만듭니다." 라는 구절이 있는데,,
혹시 다른 강좌인가요?? -
제로저아
2007.07.17 18:12
20강에서도 "+" 라는건 파일이 없으면 만드는 것이라고 설명하시는군요.
위에 퍼온 설명을 통해서나, 테스트를 통해서나.. 그게 아닌거 같은데..
음.. -
제로저아
2007.07.17 18:41
테스트를 통해서 확인한 바로.
$fp = fopen(파일, "a+");
이렇게 열었을때는
echo fgets($fp);
이렇게 해서 파일내용을 출력할수도 있고,
fputs($fp,"파일내용");
이렇게 해서 파일내용을 저장할수도 있습니다.
이걸 동시에 할수도 있는데,,
---------------
$fp = fopen(파일, "a+"); // 파일열어서
echo fgets($fp); // 읽고
fputs($fp,"파일내용"); //쓰기는 되는데
fclose($fp);
------------------
fputs가 먼저나오고 fgets가 나중에 나오면 에러납니다.
fgets가 먼저나오고, fputs가 나중에 나오는건 됩니다.
==============
$fp = fopen(파일, "r"); 이건 그냥 읽는거고,
$fp = fopen(파일, "r+"); 이건 읽고쓰는데, 파일이 기존에 있을경우에만,, 기능합니다.
없을때 생성은 안되고, 또.. $fp = fopen(파일, "w");처럼,, 파일내용을 리셋시킵니다.
--위에 설명에는 파일포인터가 맨앞에 놓인다고 하고 있습니다.-- -
제로저아
2007.07.17 18:45
$fp = fopen(파일, "w+"); 이건 뭔지 여전히 모르겠네요.
이거 밑에 echo fgets($fp); 이렇게 놓으면,, 아무것도 읽히는게 없습니다.
파일을 리셋했으니까 그럴거 같습니다.
그럼 $fp = fopen(파일, "w+"); 이걸 쓰는순간, 파일이 0이 되는데,
왜 읽기 쓰기가 가능하다고 설명에 나오는지 모르겠습니다.
===========
하여튼.. 재밌는걸 알았네요.
파일을 열어서, 읽고쓰는 순서만 지켜주면, 읽고, 쓰기도 된다는거.. 두번 열 필요없이.