Q╜先森 发表于 2017-6-24 08:41:39

文本文件和二进制文件有什么区别

如题 谢谢

求道于盲 发表于 2017-6-24 09:46:53

换行 \n
对于不同平台的实现是不一样的
有的是用\r\n表示
用的是用\n表示

文本文件操作这些文件的时候
写入的时候 自动把代码里面的 \n 替换成对应的实现
比如 替换成 \r\n
读取的时候 自动把文件里面的 对应实现替换成\n
比如 把\r\n替换成\n

二进制文件就没有这样的操作
文件里面是什么 读写到的就是什么

wuyuan2011woain 发表于 2017-6-24 10:03:32

对于文本文件和二进制文件,很多人依然稀里糊涂,即使懂了些编程的东西。有些有有些开发经验的,也不一定能说的清楚。对于初学者来说,这个也是一个非常重要的知识点。这里用图解的方式,一目了然的解释了两者的区别。
http://www.cjjjs.com/source/attached/image/20150807/20150807140929_3925.jpg
二进制文件和文本文件的区别图解分析

    图中有两个文件,一个是1.txt,一个是1.bin。分别表示,文本文件和二进制文件。文件的后缀名(扩展名)其实对于文件格式来说,没有影响。你也可以把1.bin改成1.any的扩展名。对于扩展名和文件格式的理解,请参考《你必须知道的程序那些事:扩展名和格式的区别》。
    这两个文件的区别,就在于文件内部存储的内容以及解释的方式。我们这里演示的是,两个文件在计算机中内部存储一模一样的内容,最终的数据结果却不一样。
    我们在1.txt文件中存储一个A字母。而在1.bin存入二进制的1000001。那么我们看到的,1.txt文件中就是一个大写字母A,而在1.bin文件中,读取出来后,将二进制数字转换成十进制,就是65.显然,两文件的内容不一样。
    那么我们在看看两个文件内部存储的数据是哪样的。
    这个文本文件使用ASCII编码,也就是说,我写入一个A,那么,最终存储时,需要将字符A去找对应的ASCII编码表中的字符编码,经过查找,发现编码为65.那么此时,存入计算机的就是将编码65存入。计算机内存或者硬盘都是二进制的,所以,要将十进制的65转换成二进制,就是1000001,存储的结果就是图中底部的加粗的二进制。1.txt文件就占了这么点空间。
    我们再来看1.bin文件。因为我们存储为二进制文件,那么就是说,我的文件数据是那样,就要存储的是哪样的。那么就将1000001直接存入硬盘或内存,这样也存入的底部加粗的这样。这里放在一块,你可以看到,存入的数据一模一样,都是1000001.然而,两个文件一个要存入的是字母A,一个要存入的是65数字。实际上是不一样的,然而在计算机内部存储的却是一样的。
    事实上,所谓的二进制文件和文本文件,只是一种解释计算机内部文件数据的方式而已。当然,也是存入数据的一种方式。两种文件的读写不一样。文本文件要编码存入,要解码读出。而二进制文件就是直接的读写。一个文件数据代表什么,实际上就看你用什么方式去解释了。
    假如你以ASCII编码形式,将1.bin的内容解释成文本,最终你也看到1.bin文件中存储的是字母A。如果你直接以二进制解释1.bin文件,就看到的是十进制的65数字。
    总结一下,二进制文件和文本文件的区别,就在于存储的方式(写入的方式)和读取的方式(解释的方式)来区别的。在计算机内部,都是二进制形式的数据存放。

wuyuan2011woain 发表于 2017-6-24 10:04:37

原文链接地址http://www.cjjjs.com/paper/gzsh/20158714945352.aspx

ba21 发表于 2017-6-24 10:13:50

总而概括就是
1: 文本文件存放的是 ASCII编码 打开后人直接看得懂。
2:二进制文件 存放的是二进制 只有机器才识别的了,人要看就得先转换成ASCII编码
页: [1]
查看完整版本: 文本文件和二进制文件有什么区别