EOF действительно существует? - PullRequest
3 голосов
/ 09 марта 2010

Когда я использую файловые функции в PHP, я проверяю EOF. Интересно, действительно ли EOF существует в файле. Когда я создаю пустой текстовый файл, он отображает 0 КБ. Как EOF существует в файле с 0 КБ?

Ответы [ 3 ]

9 голосов
/ 09 марта 2010

Существует контрольный символ конца файла (в наборе символов ASCII это CTRL + Z или 26 или 0x1A), но на самом деле он не был необходим для обозначения конца файла, так как ОС выпущена в 80-х годах. , Все современные ОС хранят размер файла в виде метаданных в структуре каталогов (точный формат зависит от файловой системы), а функции доступа к файлам высокого уровня проверяют размер файла, чтобы решить, когда указывать EOF для вас, программист.

Если в данных есть конец файла И у вас включен перевод в текстовом режиме (на большинстве языков это тот же параметр, который контролирует преобразования NL <-> CRLF), тогда доступ к файлу может прекратиться, когда он поражает этого персонажа EOF. В двоичном режиме чтения будут продолжаться до тех пор, пока не будет достигнут размер файла.

1 голос
/ 04 июля 2012

В современных файловых системах нет фактического символа EOF на диске. Он реализован в некоторых функциях чтения файлов, возвращая 4-байтовое значение вместо 1-байтового, но большинство функций не используют эту концепцию.

0 голосов
/ 09 марта 2010

его не существует .. но размер файла есть, и вот как вы узнаете, где находится

...