可以将所有 256 字节的值毫无问题地写入文本文件吗?

Can ALL 256 byte values be written to a text file without any issues?

将所有 (0-255) 字节值写入文本文件会导致任何错误吗? 由于字节“0”是 EOF,这是否意味着我的文件可以只包含一个 EOF 字符并且后面的所有内容都将被忽略?

Edit: Files can contain ANY byte value (0-255) and they can repeat as many times as you want.

我现在觉得很蠢

(在某些系统上)文本文件与 "binary" 文件区分开来是有原因的。

据我所知,在任何系统中,向文件写入任何字节都不会导致直接问题,但将 "any byte" 作为文本文件写入或读取可能会导致许多问题:

  • 一些字节可能会被转换为另一个字节,或多个字节 - 例如在 DOS 和 Windows 中,写入时的换行符('\n' 或字节 10 (0x0a))将变为 "\r\n")。反之亦然,读取该序列将只是一个字符。

  • 某个字节或字节组合,读取时可以看成"end of file"。在 Windows 中,即 CTRL-Z。这个用特殊字符标记文件结尾的系统的起源是一些操作系统会有一个 "number of blocks" 作为文件大小,而不是将实际大小存储在文件的元数据中。这意味着文件的大小将四舍五入到最接近的块——例如512 字节,如果你想要一个 108 字节长的文件,你会写 108 字节的文本,然后是 CTRL-Z [或系统使用的任何东西] 来标记 "the rest of this block is not part of the text".

二进制文件绝对可以包含任何字节,如果字节通过某种link(例如网络)传输,而这种方式无法处理任何字节组合,则由层决定该网络 link 将其转换为有效的东西,然后再将其转换回来。