(在某些系统上)文本文件与"二进制"文件的区别是有原因的.
据我所知,没有系统将任何字节写入文件会导致直接问题,但写入或读取"任何字节"作为文本文件可能会导致许多问题:
一些字节可能被转换为另一个字节,或者多个字节 - 例如在DOS和Windows中,写入时的换行符('\n'或字节10(0x0a))将变为"\r\n").反之亦然,读取该序列只是一个字符.
读取时,某些字节或字节组合可视为"文件结束".在Windows中,即CTRL-Z.这种用特殊字符标记文件结尾的系统的起源是某些操作系统对文件大小具有"块数",而不是将实际大小存储在文件的元数据中.这意味着文件的大小将向上舍入到最近的块 - 例如512字节,如果你想要一个108字节长的文件,你可以写入108字节的文本,然后是CTRL-Z [或者任何系统用于]标记"该块的其余部分不是文本的一部分".
二进制文件绝对可以包含任何字节,如果字节是通过某种类型的链接(例如网络)传输的,这些链接无法完全处理任何字节组合,则由该网络链接的层将其转换为某种形式这工作,然后再将其转换回来.