检测文件是二进制还是纯文本?

dr.*_*vil 4 .net format binary file

如何检测文件是二进制还是纯文本?

基本上我的.NET应用程序正在处理批处理文件和提取数据但是我不想处理二进制文件.

作为一种解决方案,我正在考虑分析文件的前X个字节,如果有比可打印字符更多的不可打印字符,那么它应该是二进制的.

这是正确的方法吗?这项任务有更好的实施吗?

小智 6

二进制是什么意思?"战争的艺术"是用中文二进制写的吗?日英词典怎么样?

没有真正的100%方式.

你需要使用某种启发式方法.

一些选项可能是:

如果以上(特别是文件签名和扩展名)没有帮助,那么尝试根据某些字节的存在/不存在进行猜测(就像你正在做的那样).

注意:最好首先检查扩展/签名,因为您只需要读取几个字节/文件元数据,与实际读取整个文件相比,这将非常有效.

  • 这就是我问这个问题的原因:) (2认同)

Bru*_*ant 5

Unixfile命令以一种巧妙的方式做到了这一点。当然,它做的更多,但你可以在这里检查算法,然后构建一些专门的东西。


更新:上面的链接似乎已损坏。试试这个