检测zip文件中的二进制文件和字符编码

时间:2009-10-08 08:25:11

标签: java zip heuristics zipfile

当从未知来源读取zip文件(使用Java ZipInputStream或任何其他库)时,有任何方法可以检测哪些条目是“字符数据”(如果是这样的话)或“二进制数据”。而且,如果是二进制的,任何确定更多信息的方式(MIME类型等)

编辑 ByteOrderMark(BOM)是否出现在zipentries中,如果是这样,我们必须对其进行特殊操作。

2 个答案:

答案 0 :(得分:1)

它基本上归结为用于确定文件内容的启发式方法。例如,对于文本文件(ASCII),应该可以通过检查文件中使用的字节值范围来做出相当好的猜测 - 尽管这绝不会完全是万无一失的。

您应该尝试限制要识别的文件类型的类别,例如是否足以辨别“文本数据”和“二进制数据”?如果是这样,您应该能够获得相当高的检测成功率。

对于UNIX系统,始终有file command尝试根据(主要)内容识别文件类型。

答案 1 :(得分:0)

也许实现一个能够应用/usr/share/file/magic中定义的规则的Java组件。我很想拥有这样的东西。 (你基本上必须能够查看前几个字节。)