我在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)”上方为红色
答案 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'