gpt4 book ai didi

Java 使用 mimeutil 从内容中获取文件类型未按预期工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:34 24 4
gpt4 key购买 nike

在我的以下代码中:

MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
File f = new File ("c:\\temp\\mime\\java.exe");
Collection<?> mimeTypes = MimeUtil.getMimeTypes("c:\\temp\\mime\\java.exe");
MimeType m = mimeTypes.toArray(new MimeType[mimeTypes.size()])[0];
System.out.println(m);

无论选择什么文件类型,即 csv、xls、exe 等,输出始终是 application/octet-stream。

但根据以下网站:

http://www.rgagnon.com/javadetails/java-0487.html

它应该显示为 ms-word 或 ms-excel 等。

如何实现?我想要的只是从文件内容中获取文件类型(而不是使用不太可靠的文件扩展名)。我正在阅读其他选项,比如 tika 需要太多文件(比如 20 个),这对于这个单一目的来说太多了,而 JMimeMagic 需要 apache-oro,这是一个死项目,因此我也不喜欢这个想法。所有其他解决方案似乎都依赖于如上所述似乎不可靠的文件扩展名。

谢谢

最佳答案

好吧,我想我自己(和你)想出了这个……我看了作者的单元测试,特别是 MimeUtilTest.java,你瞧,他在单元测试设置()中这样做:MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.ExtensionMimeDetector");
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.OpendesktopMimeDetector");

我和你都只注册了第一个,MagicMimeMimeDetector。一旦我添加了另外两个,一切就开始正常工作了。

关于Java 使用 mimeutil 从内容中获取文件类型未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775494/

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