【问题标题】:Does EOF actually exist?EOF 真的存在吗?
【发布时间】:2010-03-09 00:27:50
【问题描述】:

当我在 PHP 中使用文件函数时,我会检查 EOF。我想知道 EOF 是否真的存在于文件中。当我创建一个空文本文件时,它显示 0KB。 0KB的文件中怎么存在EOF?

【问题讨论】:

    标签: php eof


    【解决方案1】:

    有一个文件结束控制字符(在 ASCII 字符集中它是 CTRL+Z 或 26 或 0x1A),但自从 80 年代发布的操作系统以来,实际上并不需要它来标记文件的结束.所有现代操作系统都将文件大小作为元数据存储在目录结构中(具体格式取决于文件系统),高级文件访问函数将检查文件大小以决定何时向程序员指示 EOF。

    如果数据中有文件结尾并且您打开了文本模式翻译(在大多数语言中,这与控制 NL CRLF 转换的设置相同),则文件访问可能会停止它击中了那个 EOF 字符。在二进制模式下,读取将继续进行,直到达到文件大小为止。

    【讨论】:

    • 对,其他操作系统使用了文件分隔符(28)等等。另一个我们应该高兴使用字符来标记文件结尾的原因已经过时了。
    • ^D 在 unix 上不是 EOF。相反,unix 上的终端设备允许您定义一个控制字符,该控制字符在按下时在设备上生成一个 EOF 条件,默认值为 ^D。但这并不意味着 ^D 的 ascii 字节会出现在来自终端的数据流中......
    • '实际上并不需要'哦?管道呢?
    【解决方案2】:

    在现代文件系统中,磁盘上没有实际的 EOF 字符。它在某些文件读取函数中通过返回 4 字节值而不是 1 字节值来实现,但大多数函数不使用该概念。

    【讨论】:

      【解决方案3】:

      它不存在..但文件大小存在,这就是你知道eof在哪里的方式

      【讨论】:

        猜你喜欢
        • 2017-06-25
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        • 2016-08-23
        • 2020-12-15
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多