读取文件类型 (MIME) returns Java 中为空

Reading file type (MIME) returns null in Java

我正在编辑不想在我的系统上 运行 的自定义 CSV 导入程序。 我的 Java 版本是:“1.8.0_171”。

String contentType = Files.probeContentType(filePath);          
    //Should return "text/csv";
System.out.println("You have "+contentType+" type file.");
    //returns "You have null type file."

我检查了文件是否可以访问 - returns 正确。

System.out.println( "File is readable: " + Files.isReadable(filePath));
// returns: "File is readable: true"

接下来我应该采取什么步骤? 我发现了一些类似的错误:

https://bugs.java.com/view_bug.do?bug_id=JDK-7144997 https://bugs.openjdk.java.net/browse/JDK-8080369

但是我不知道他们是否相关。

更新 将 Java 更新到版本“10.0.1”没有帮助。

更新 2 将 null 添加到允许的文件类型列表确实有效,但我认为这是一个巨大的 hack,这仍然需要解决。

在 Windows 上没有安装任何额外的 FileTypeDetector 实现 Java 将使用默认文件类型检测器 RegistryFileTypeDetector,这将 return 任何与该特定机器上的扩展名,意味着 HKEY_CLASSES_ROOT\.csv 下的任何内容都是 returned.

如果您想启用某些软件 运行 考虑通过 ServiceLoader 机制在类路径上安装自定义 FileTypeDetector 或将 .csv 与注册表中的所需值相关联。