to:iamdan(egg天下)
本来是文本文件,当我把它的扩展名改为.exe,那,它还是文本文件吗???当然是!!!
本来是EXE文件,当我把它的扩展名改为.txt,那,它还是二进制文件吗??当然是!!!

解决方案 »

  1.   

    to:wincao(不落之叶)
    我在程序中用二进制方式写文件,并不少所有文件都有文件头的啊!文件头是一些很常见与正规的软件自定义的文件格式的头信息而已,我们用二进制方式写文件时,就算没有文件头,也是二进制啊!!!
      

  2.   

    文本文件就是二进制文件,只是应用软件可以显示并且处理其中的 控制字符(如chr(13)+chr(10))
      

  3.   

    对文件中的字符进行抽样分析,检查是否全部都是显示字符和控制字符(如chr(13)+chr(10)) 。如果是,则为文本文件,反之则是二进制文件。
      

  4.   

    试想,我在文本文件中加入了一个不可打印字符,它还是不是文本文件?如果一个文本文件符合特定的格式,另一个程序对此格式作出解释,使此文本文件成为可执行文件(例如vb脚本),它还是文本文件,但如果我将该文件的每个字符的asc码都加一,(对另一程序也作适当修改)必然出现许多不可打印字符,它又是什么文件?
    忽略两者的区别吧。
      

  5.   

    首先,我们必须澄清“什么是文本文件”。根据定义,文本文件是指:由可打印字符组成的、没有格式命令的、能在所有支持ASCII编码的机器上使用的文件。
    因此,是否是文本文件,要看其包含的内容是否符合这个要求。
    前面有朋友说,所有文件都是二进制文件。我以为是抬杠。我们今天使用的计算机都是建立在冯.罗伊曼体系之上,在机器内部,所有的东西都是二进制表达的。
    这个问题的答案,我以为需要更进一步的条件。也就是,做出这样的判断的目的是什么。
    如果纯粹是为了检验某文件是否是文本文件,那就要检查所有的内容是不是可打印字符。这里有个问题,这个文件的编码体系是什么?ANSI、UNICODE还是GB_2312?
    如果是为了特殊目的,你只需要检查文件内容是否符合你的需要就可以了。
    一起讨论。
      

  6.   

    补充:
    在UNICODE的今天,原来对于文本文件的定义也需要修改了,不能只是ASCII了。