gpt4 book ai didi

Java 返回 YAML mime 类型 null

转载 作者:行者123 更新时间:2023-12-02 04:16:30 26 4
gpt4 key购买 nike

Java 8 Files.probeContentType(new File("config.yml").toPath()); 返回 null。为什么java找不到yaml mime类型,但可以找到xml作为text/xml?还有其他办法吗?

foo: bar

最佳答案

The default implementation on Windows使用注册表来查找内容类型。您需要创建注册表项 HKEY_CLASSES_ROOT\.yml 并在其下方添加一个名为 Content Type 的字符串值,该值具有您要用作 MIME 类型的值。您可以将以下内容保存为 yaml.reg 并使用它来添加必要的 key :

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.yml]
"Content Type"="application/x-yaml"

或者,如果您想使用Files.probeContentType(…)但不想依赖提供的默认实现,您可以创建自己的 FileTypeDetector :

package com.example;

public class CustomFileTypeDetector extends FileTypeDetector
{
public CustomFileTypeDetector()
{
}

@Override
public String probeContentType(Path path)
throws IOException
{
// Some error checking omitted for brevity
String filename = path.getFileName().toString();

if (filename.endsWith(".yml") || filename.endsWith(".yaml")) {
// See https://stackoverflow.com/a/332159/21926
return "application/x-yaml";
}

return null;
}
}

您还需要创建一个文件 ServiceLoader可以找到,因为这就是它发现 FileTypeDetector 实现的方式。假设使用 maven,您将创建一个文件:

src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector

包含以下内容(基于上面的示例代码):

com.example.CustomFileTypeDetector

关于Java 返回 YAML mime 类型 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57823177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com