那么,文本文件和二进制文件有什么区别呢?
根据我们以往的经验,文本文件通常用来保存肉眼可见的字符,比如 .txt 文件、.c 文件、.dat 文件等,用文本编辑器打开这些文件,我们能够顺利看懂文件的内容。而二进制文件通常用来保存视频、图片、音频等不可阅读的内容,当用文本编辑器打开这些文件,会看到一堆乱码,根本看不懂。
实际上,从数据存储的角度上分析,二进制文件和文本文件没有区别,它们的内容都是以二进制的形式保存在磁盘中的。
我们之所以能看懂文本文件的内容,是因为文本文件中采用的是 ASCII、UTF-8、GBK 等字符编码,文本编辑器可以识别出这些编码格式,并将编码值转换成字符展示出来。而对于二进制文件,文本编辑器无法识别这些文件的编码格式,只能按照字符编码格式胡乱解析,所以最终看到的是一堆乱码。
open()的文本格式和二进制格式
使用 open() 函数以文本格式打开文件和以二进制格式打开文件,唯一的区别是对文件中换行符的处理不同。
在 Windows 系统中,文件中用 "/r/n" 作为行末标识符(即换行符),当以文本格式读取文件时,会将 "/r/n" 转换成 "/n";反之,以文本格式将数据写入文件时,会将 "/n" 转换成 "/r/n"。这种隐式转换换行符的行为,对用文本格式打开文本文件是没有问题的,但如果用文本格式打开二进制文件,就有可能改变文本中的数据(将 /r/n 隐式转换为 /n)。
而在 Unix/Linux 系统中,默认的文件换行符就是 /n,因此在 Unix/Linux 系统中文本格式和二进制格式并无本质的区别。
总的来说,为了保险起见,对于 Windows平台最好用 b 打开二进制文件;对于 Unix/Linux 平台,打开二进制文件,可以用 b,也可以不用。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/22683.html