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

标签 java heuristics zip

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

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

最佳答案

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

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

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

关于java - 检测 zip 文件中的二进制文件和字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536407/

相关文章:

java - 在 Android(或 java)中使用没有对象的 "."是什么意思?

algorithm - 最大覆盖率变体的启发式

algorithm - 最平衡二分的排列

matlab - 如何在matlab中压缩目录同时排除文件/文件夹

java - 使用密码压缩整个目录

python - 错误压缩文件 : File is not a zip file

java.lang.ClassNotFoundException :com. mysql.jdbc.Driver 异常

java - 如何启用检查以警告将对象转换为基元,即在方法使用 int 但将 Integer 传递给它时发出警告

java - 如何移动标签中的下一行?

java - 节点间距离不规则的 A* 算法启发式