读取文件类型 (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
与注册表中的所需值相关联。
我正在编辑不想在我的系统上 运行 的自定义 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
与注册表中的所需值相关联。