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