gpt4 book ai didi

java - 通过 Apache Commons Compress 检测压缩类型

转载 作者:行者123 更新时间:2023-12-01 15:45:27 27 4
gpt4 key购买 nike

是否有一种快速方法可以使用 Apache Commons Compress API 从文件的内容(即不是从文件扩展名)可靠地检测文件的压缩类型?

使用Apache Tika,可以做到

Tika tika = new Tika();
String path = <the full path to the file examined, including the filename>;
FileInputStream fis = new FileInputStream(new File(path));
String type = tika.detect(fis);

并且 type 变量将填充检测到的文件内容的 MIME 类型(例如,text/plain、application/zip 等)。

理想情况下,出于多种原因,我希望避免让 Tika 参与此过程,其中包括 Tika 似乎将 AR 存档格式误检测为“文本/纯文本”这一事实,该格式是 Commons Compress 生成的格式之一。

最佳答案

您最好的选择可能是从文件中获取前几个字节,并检查它们是否有您感兴趣的各种格式的 mime 魔术字节模式。

当您要求 Tika 进行检测时,这就是它将为您做的事情。不过,您可以编写自己的代码

也许可以将流依次传递给每个 Commons Compress 解码器,并假设第一个不崩溃的是格式,但这可能有点不可靠......

我建议您坚持使用 Tika,对于 Tika 当前不支持的任何格式,请打开 bug report对于检测问题。如果可以的话,上传一个可以在单元测试中使用的非常小的测试文件,如果可能的话还可以上传魔术检测字节。 (对于 commons compress 支持的格式,如果需要,您应该能够在 commons compress 代码中找到 header 详细信息)

关于java - 通过 Apache Commons Compress 检测压缩类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132200/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com