目录
?
文本文件
文本文件,简单来说就是可以使用记事本直接查看数据的文件。?一般以.txt结尾的文件。
我们可以理解为,文本文件存放的数据就是字符串和字符。?
?
二进制文件?
二进制文件中存放的数据是:数据本身的二进制形式。 例如数字,图片,视频等。??
?
两者的共同点
无论是二进制文件还是文本文件,在计算机中存储都是以二进制的形式进行存储的。
?
两者的区别?
举一个简单的例子:??
1 在二进制文件的存储为 0000 0001, 就是其本身对应的二进制形式。?
1 在文本文件中的存储并不是数字1对应的二进制,我们前面说到,文本文件存放字符串,所以1在文本文件中是按照字符1('1'),存储的,其对应的二进制通过查找ASCLL码表得到。??
?
所以其实在计算机中,文本文件和二进制文件都是以二进制形式存放的。不同的是,
?二进制文件中存储的二进制是数据本身对应的二进制?
文本文件中存储的二进制是通过查找ASCLL码表,UNICODE码表等编码表得到的?
?
?查看文件
对于文本文件,我们可以使用文本编辑器来查看文件中的内容,文本编辑器会根据存放的二进制在对应的编码表中查找对应的数据显示出来。 记事本就是其中之一。?
其实上面也说明了一个问题,就是文本编辑器是无法查看二进制文件的。原因很简单,文本编辑器之所以可以看文本文件,是因为文本文件存放时就是根据码表存放的,文本编辑器只需要再通过查表就能找到对应的数据,然后显示出来。
而对于二进制文件就不同了,二进制文件是直接将数据对应的二进制存放起来,并不是根据码表进行的转换,?所以当你使用文本编辑器去查看二进制文件,文本编辑器会使用二进制文件中的二进制对照码表,由于上述原因,会出现乱码。
?
二进制文件存储字符(串)?
二进制文件中存储字符串和文本文件中存储字符(串)是相同的,因为字符和字符串本身并不存在二进制形式,想要转化成二进制形式必须经过查表才能转换成对应的二进制。对于二进制文件也是如此。?
所以在二进制文件中存储字符(串),也是通过查表的方式转化成的二进制,所以对于二进制的字符(串)是可以使用文本编辑器查看的。?
?
使用函数read和write函数进行读写?
在文件操作中,如果对二进制写入数字等本身具有二进制的数据时,是不能直接使用 << 和 << 写入和读取的,因为 << 和? >>? 可以理解为专门用于字符输入输出,当我们以这种方式写入数据时,数据会自动被转换成字符的形式输入。???
io << 1;? //? 实际输入的是字符1。 读取同理?
所以在程序中,我们如果想在二进制文件中直接写入数据对应的二进制,就需要借助函数write()来实现,同理,如果要直接读取以write()写入的数据,需要使用read()来读取。?
?
1.? 文本文件和二进制文件中的数据在存储时都是以二进制形式存储。?
2.? 如果转换为二进制时需要查表那么就是文本文件,如果直接存储的是数据对应的二进制那么就是二进制文件(对于字符(串)转为二进制都是查表,因为其自身不对应二进制)?
3.? 对二进制文件的写入和读取,如果是字符串那么直接使用 << 和 >> 即可(和文本文件一样)。如果你想存储数据本身对应的二进制,那就得使用write()和read()函数来实现了。?