当从未知来源读取 zip 文件(使用 Java ZipInputStream 或任何其他库)时,是否有任何方法可以检测哪些条目是“字符数据”(如果是编码)或“二进制数据”。并且,如果是二进制,则可以确定更多信息(MIME 类型等)的任何方式
编辑 ByteOrderMark (BOM) 是否出现在 zipentries 中,如果是,我们必须对其进行特殊操作。
最佳答案
它基本上可以归结为确定文件内容的启发式方法。例如,对于文本文件(ASCII),应该可以通过检查文件中使用的字节值的范围来做出相当好的猜测——尽管这永远不会完全万无一失。
您应该尝试限制要识别的文件类型的类别,例如区分“文本数据”和“二进制数据”就足够了吗?如果是这样,您应该能够获得相当高的检测成功率。
对于 UNIX 系统,始终有 file command它尝试根据(主要)内容来识别文件类型。
关于java - 检测 zip 文件中的二进制文件和字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536407/