2010-03-09 2 views
3

PHP에서 파일 함수를 사용할 때 EOF를 확인합니다. EOF가 실제로 파일에 존재하는지 궁금합니다. 빈 텍스트 파일을 만들면 0KB가 표시됩니다. 0KB의 파일에는 EOF가 어떻게 존재합니까?실제로 EOF가 있습니까?

답변

9

파일 끝 제어 문자가 있습니다 (ASCII 문자 세트는 CTRL + Z 또는 26 또는 0x1A입니다). 그러나 OSes에서 릴리스 된 이후 파일의 끝을 표시하는 데 실제로 필요하지 않았습니다. 80 년대. 모든 최신 OS는 디렉토리 구조에 파일 크기를 메타 데이터로 저장합니다 (정확한 형식은 파일 시스템에 따라 다름). 높은 수준의 파일 액세스 기능은 파일 크기를 검사하여 프로그래머 인 EOF를 언제 나타낼 지 결정합니다.

데이터에 파일 끝이 있고 텍스트 모드 변환이 켜져 있으면 (대부분의 언어로 이것은 NL < -> CRLF 변환을 제어하는 ​​설정과 동일합니다) 파일 액세스가 중지 될 수 있습니다 그 EOF 문자를 치면. 바이너리 모드에서는 파일 크기에 도달 할 때까지 읽기가 계속됩니다.

+1

ctrl + z는 windows/dos입니다. ctrl + d는 유닉스이다. – gnud

+2

오른쪽 및 기타 OS에는 파일 구분 기호 (28) 등이 사용되었습니다. 문자의 끝을 표시하기 위해 우리가 기뻐해야하는 또 하나의 이유가 더 이상 사용되지 않습니다. –

+1

^D는 유닉스에서 EOF가 아닙니다. 오히려 Unix의 터미널 장치는 장치를 눌렀을 때 EOF 조건을 생성하는 제어 문자를 정의 할 수있게하며 기본값은^D입니다. 하지만 이것은^D에 대한 ASCII 바이트가 터미널에서 데이터 스트림에 나타나는 것을 의미하지는 않습니다 ... –

0

가 존재하지 않습니다 ..하지만 파일 크기가하는, 그리고 디스크에 실제 EOF 문자가없는 EOF

1

현대적인 파일 시스템에서 어디 있는지 아는 방법입니다. 그것은 1 바이트 값 대신에 4 바이트 값을 리턴함으로써 일부 파일 읽기 기능에서 구현되지만 대부분의 함수는 개념을 사용하지 않습니다.

관련 문제