2012-08-07 87 views
1

我正在写一个应用程序,我需要确定从用户提供的文件是否是文本,因为我正在执行搜索。如何确定文件是二进制还是文本?

我不是基于扩展名,因为我想在源代码文件中搜索例如,或任何其他具有文本内容(即使是不知名的扩展名)的文件。

有没有办法确定文件是否是文本?

回答

1

感谢大家提供的解决方案! 我刚刚发现了一个框架,似乎很好地完成了这项工作!

我在这里留下一个可供参考的链接:https://github.com/aidansteele/MagicKit

0

没有办法确定。但请注意,大多数控制字符 不会出现在ASCII文件中。 您可以通过制作大部分ASCII 控制字符的子集来做出相当好的猜测。然后计算子集中文件中字符数为 的字符数,ASCII文件的计数应该为零。 但归根到底你必须证明一个否定的,这是一件麻烦的事情。

0

您需要打开并读取数据。

对于ASCII文本文件,这意味着检查字符是否在可打印范围内。

对于UTF文本文件,您可能需要先阅读BOM(字节顺序标记)以确定编码,然后再读取文件的其余部分。

更多在这里阅读:http://en.wikipedia.org/wiki/Text_file

相关问题