为什么Files.probeContentType返回null

时间:2012-09-13 13:31:08

标签: java macos

我在mac上使用java se7,oracle预览。

我的问题是“Files.probeContentType”返回null ...是否有可能是因为se7的早期状态为mac? 我的代码:

if(directory == null) return;
String content = null;
try {
    content = Files.probeContentType(directory.toPath());
} catch (IOException e) {
    JOptionPane.showMessageDialog(main, e.toString());
    return;
}
if(content == null)
{
    return;
}
else if(content.contains("image"))
{
    main.pctviewer.setImage(directory);
}

文件的名称是:

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

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

3 个答案:

答案 0 :(得分:9)

我再次向oracle报告了这个错误,希望他们能够向后移植jdk8解决方案(我没有太多希望,但你永远不知道)。

与此同时,您可以使用我自己的https://github.com/jeantil/jdk7-mimeutils maven项目包中可用的FileTypeDetector的backport到jar,可以将其添加到类路径以启用mime类型检测。我还提供了一个mime.types文件放在您的主文件夹中,以便检测正常工作。我从某个版本的apache中提取了mime.types文件,所以它非常完整。

答案 1 :(得分:3)

我发现OS X上的FileTypeDetector有问题:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7133484

显然这将在Java 8中修复。

答案 2 :(得分:0)

使用以下方法获取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'