读取文件头1K字节,判断其中是否有不可显示字符(<0x20),如果有则不是文本文件。

解决方案 »

  1.   

    用API函数取它的扩展名不就行了!
      

  2.   

    取扩展名大大的不行,如果将command.com改名为command.txt,是否能说这个文件是文本文件呢?
      

  3.   

    其实这个问题很简单.
    文本文件是一种标准信息交换文件,即文本文件可以在不同的系统中用打开文本的工具都可以
    阅读,就象.jpg都可以用看图的软件打开一样.
    理解了这一点,我们可以知道所谓文本文件,就是由也仅由可显示的ASCII码组成的文件;
    所以,识别它的方法就是判断所有的字节是否是可显示的ascii码.
      

  4.   

    我比较同意SoftSprite的说法,但似乎又不够精确。如果头1k里头没有不可显示的字符,就一定能判断不是文本文件吗?
    如果按qxp的说法,岂不是要遍历所有的字节吗?如果文件很大,花的时间不少。
    请各位继续发表高见,谢谢。
      

  5.   

    我觉得没什么特别好的办法, 随机取一些字节出来判断应该比只判断头1K好一些. 好象UNIX中的
    test -t也是这么实现的.
      

  6.   

    用TStrings.LoadFromFile()去装载文本文件,再判断取出的内容大小与源文件的大小,就可知道此文件是否是文本文件了