在自学Java的过程中,文本IO和二进制IO的内容有点多,很容易混淆。就目前学习的一些情况写一点总结:
我们经常以为后缀名是
.txt的文件是文本文件,后缀名是
.dat的文件是二进制文件。其实并不然,计算机并不区分二进制文件
和文本文件。所有的文件都是以二进制形式来存储的。
那么,以我们正常的思维来说,文本文件和二进制文件最直观的区别是什么呢?你可能已经发生过这样的事情:你用程序写入一些数据到文件中,当你用记事本等工具打开的时候,却不是你存储的数据,是一些乱码又或是一些与你写的数据完全不同的东西。那为什么会这样子呢?实际上,每个文件都是二进制文件,文本文件是在二进制文件的基础上自动进行了编码和解码。编码解码后就变成了输入的数据。可以简单的认为:
文本文件是由字符序列构成的,而二进制文件是由位序列构成的。例如,你存储十进制数据199,在文本文件中存储的内容就是0X30 0X39 0X39,在二进制文件中存储的内容是C7(199的十六进制是C7)。