Java 为什么Files.probeContentType返回null

Java 为什么Files.probeContentType返回null,java,macos,Java,Macos,我在mac上使用JavaSE7,oracle预览版 我的问题是“Files.probeContentType”返回null…这可能是由于mac的se7早期状态造成的吗? 我的代码: 文件名为: “/Users/admin/Desktop/temp/q12/formulare/Bildschirmfoto 2012-09-11 um 17.57.59.png” 在eclipse的调试模式下,如果我将鼠标悬停在文件“File path=Unis path(id:145)”的上方,则该文件为红色我发现

我在mac上使用JavaSE7,oracle预览版

我的问题是“Files.probeContentType”返回null…这可能是由于mac的se7早期状态造成的吗? 我的代码:

文件名为:

“/Users/admin/Desktop/temp/q12/formulare/Bildschirmfoto 2012-09-11 um 17.57.59.png”


在eclipse的调试模式下,如果我将鼠标悬停在文件“File path=Unis path(id:145)”的上方,则该文件为红色

我发现OS X上的FileTypeDetector有缺陷:


显然,这将在Java 8中得到修复。

我已经再次向oracle报告了该错误,希望他们能够支持jdk8解决方案(我没有太多希望,但你永远不知道)


同时,您可以使用maven项目包中提供的FileTypeDetector的我自己的后端口,将其添加到jar中,以启用mime类型检测。我还提供了一个mime.types文件放在您的主文件夹中,以便检测正常工作。我从apache的某个版本中提取了mime.types文件,因此它非常完整。

使用以下方法在Java 8中获取mime类型的文件:

String location = "/Users/user/Desktop/leaf.jpg";
File file = new File(location);
Path source = Paths.get(location);
MimetypesFileTypeMap m = new MimetypesFileTypeMap(source.toString());
System.out.println( m.getContentType(file) );

上面代码的输出是:“image/jpg”

一个nope和我的错误报告从未通过:(我的博客有一些变化:现在链接是2015年的——OS El Captain,仍然有bug!2018年的——OS High Sierra,JDK 8,总是空的。2019年的——MacOS High Sierra,JDK 8,返回
null
。2019年的——MacOS Mojave JDK8——返回空的——到2016年7月为止,这似乎仍然是一个开放的bug。如果我错了,请纠正我。
String location = "/Users/user/Desktop/leaf.jpg";
File file = new File(location);
Path source = Paths.get(location);
MimetypesFileTypeMap m = new MimetypesFileTypeMap(source.toString());
System.out.println( m.getContentType(file) );