java - Files.probeContentType() 在 OpenJDK 11 上返回 null
问题描述
似乎在 OpenJDK 11 上Files.probeContentType()
返回null
文件(其中文件名未指示 MIME 类型),而它在 OpenJDK 8(在 Linux x64 上)上工作。这是什么原因?
注意:它可能适用于由名称指示类型的文件,例如,“test.pdf”将生成“application/pdf”,但将文件重命名为“test”将生成null
.
解决方案
文件类型检测很大程度上是特定于平台的,被认为不可靠。例如,GnomeFileTypeDetector
在 JDK 8 中可用,但仅适用于 Linux 系统。
OpenJDK 开发人员已决定从 JDK 中删除GnomeFileTypeDetector
(MagicFileTypeDetector
已在 JDK 9 中),请参阅OpenJDK 错误跟踪器 和此处。
可用的检测器MimeTypesFileTypeDetector
(在 Linux 上)或RegistryFileTypeDetector
Windows 上只是实现从文件扩展名到 MIME 类型的映射,但不检查文件的实际内容。
(注意:所有检测器实现都在 package 中找到(或没有)sun.nio.fs
。)
推荐阅读
- flutter - 如何允许用户为他们正在添加的内容选择图标?
- node.js - 错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头 - Express + Request
- nativescript - 更改状态栏字体颜色
- java - 如何在android studio中获取微调器值并将其传递给文本视图
- python - 如何使用 Tensorflow 导出简单保存的模型图以进行图像分类?
- ruby - 如何使用 yajl-ruby 解析和过滤大 json 文件中的数据(2G 大小)
- openshift - 在 OpenShift OKD 中强制使用 DNS
- python - 如何使用python从x,y,z导出到geotiff
- git - 无法在 Windows 上使用 PyCharm 终端重置 git 凭据
- android - 使用 S9 设备解析服务器 I/O 失败消息,与其他设备合作