当从未知来源读取zip文件(使用Java ZipInputStream或任何其他库)时,有任何方法可以检测哪些条目是“字符数据”(如果是这样的话)或“二进制数据”。而且,如果是二进制的,任何确定更多信息的方式(MIME类型等)
编辑 ByteOrderMark(BOM)是否出现在zipentries中,如果是这样,我们必须对其进行特殊操作。
答案 0 :(得分:1)
它基本上归结为用于确定文件内容的启发式方法。例如,对于文本文件(ASCII),应该可以通过检查文件中使用的字节值范围来做出相当好的猜测 - 尽管这绝不会完全是万无一失的。
您应该尝试限制要识别的文件类型的类别,例如是否足以辨别“文本数据”和“二进制数据”?如果是这样,您应该能够获得相当高的检测成功率。
对于UNIX系统,始终有file command尝试根据(主要)内容识别文件类型。
答案 1 :(得分:0)
也许实现一个能够应用/usr/share/file/magic中定义的规则的Java组件。我很想拥有这样的东西。 (你基本上必须能够查看前几个字节。)