php - 동일한 파일을 운영하는 fwrite 및 fread 정보
怪我咯
怪我咯 2017-05-16 12:02:35
0
3
1890
으아악

이 코드가 실행되면 두 개의 helloworld가 파일에 기록됩니다. 이유는 무엇입니까?
이 구절을 이해하는 방법:

업데이트 모드에서는 동일한 파일을 읽고 쓸 수 있습니다. fflush 또는
파일 위치 지정 기능은 읽기와 쓰기 사이에 호출되어야 하며
모드의 초기 항목 뒤에 b가 포함된 경우에는 그 반대입니다.
"rb" 또는 "w b"와 같은 문자는 바이너리 파일을 나타냅니다. 파일 이름은 최대
FILENAME_MAX자로 제한됩니다. FOPEN_MAX 파일을 한 번에 열 수 있습니다.

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(3)
巴扎黑

fopen的第二个参数为模式, 有r, w, b, a等模式, 其中a表示append, 也就是附加的意思, 打开时不会清空文件(把EOF指向0), 而是把文件指针指向文件末尾. 所以这个时候如果直接写的话不会覆盖原有的内容. 通过rewind 함수는 파일 포인터를 시작점으로 가리킵니다. 이때 쓰면 원래 내용을 덮어쓰게 됩니다. 으아악

大家讲道理

두 가지 이유가 있습니다. 추가 모드에 있고 마지막 helloworld를 삭제하지 않았으므로 마지막 시간과 현재 시간이 모두 거기에 있습니다

滿天的星座

fopen("./log", "a+"); 이 문장은 읽기 및 쓰기 가능한 파일을 추가 방식으로 여는 것을 의미합니다. 파일이 존재하는 경우 원본 내용은 유지되고 데이터는 끝에 추가됩니다. 파일의.

이때, $fp 파일 포인터는 파일의 끝을 가리키며 동작합니다
fwrite($fp, '12345');

이때, fread($fp, 10) 을 직접 출력하면 빈 문자열이 됩니다. 이는 $fp 파일 포인터가 파일의 끝을 가리키기 때문입니다. 길이를 지정하면 거꾸로 읽어서 출력하게 됩니다. 확실히 비어있을 것입니다.
그리고 파일 포인터의 위치를 ​​되감기 위해 rewind($fp);를 추가하면 $fp 포인터가 파일의 시작 부분을 가리키고 fread($fp, 10)을 인쇄하면 결과가 생성됩니다.

하지만 로그를 열면 매번 파일 끝에 추가됩니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿