文本文件:储存的是字符串
定义:由单一特定编码的字符组成,如 UTF-8 编码,内容容易统一展示和阅读。(由于文本文件存在编码,所以,它也可以被看做是存储在磁盘上的长字符串,如一个 txt 格式的文本文件)
特别的是,文本文件是指以ASCII码方式(也称文本方式)存储的文件,更确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息(包括能用ASCII码字符表示的回车、换行等信息)外,不能存储其他任何信息。
二进制文件:储存的是字节码
定义:直接由比特0和比特1组成,没有统一的字符编码,文件内部数据的组织格式与文件用途有关。(由于没有统一的字符编码,只能当做字节流,而不能看做是字符串)
广泛用于存储各种程序数据,如图像、音频、视频
区别
- 两者最主要的区别在于是否有统一的字符编码。
- 文本文件编码基于字符定长,译码容易;二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些(不同的二进制文件格式,有不同的译码方式)。
- 文本工具打开一个文件,首先读取文件物理上所对应的二进制比特流,然后按照所选择的解码方式来解释这个流,然后将解释结果显示出来。一般来说,你选取的解码方式会是ASCII码形式(ASCII码的一个字符是8个比特),接下来,它8个比特8个比特地来解释这个文件流。记事本无论打开什么文件都按既定的字符编码工作(如ASCII码),所以当他打开二进制文件时,出现乱码也是很必然的一件事情了,解码和译码不对应。
文本文件的存储与其读取基本上是个逆过程。而二进制文件的存取与文本文件的存取差不多,只是编/解码方式不同而已。
ASCII
ASCII标准使得只含有ASCII字符的文本文件可以在Unix、Macintosh、Microsoft Windows、DOS和其它操作系统之间自由交互,而其它格式的文件是很难做到这一点的。但是,在这些操作系统中,换行符并不相同,处理非ASCII字符的方式也不一致。