gpt4 book ai didi

特定文件系统的 Java 路径

转载 作者:行者123 更新时间:2023-11-30 07:31:19 25 4
gpt4 key购买 nike

阅读documentation on Path在其他地方,对我来说很明显,它总是需要虚拟机运行的文件系统。但是,我想向 Java 明确表示我想要 Unix 路径。

原因是我通过 Jackson 将路径导出为 JSON,并且在序列化器中使用 toString() 为不同的虚拟机返回不同的结果。简单来说,即使我在 Windows 机器上开发,我也想得到这个:

{"path":"/tmp"}

我的序列化器如下所示:

public class PathSerializer extends JsonSerializer<Path> {

@Override
public void serialize(Path path, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException {
jsonGenerator.writeString(path.toString());
}

}

要在 Windows 上解决这个问题,我当然可以这样做:

public class PathSerializer extends JsonSerializer<Path> {

@Override
public void serialize(Path path, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException {
jsonGenerator.writeString(path.toString().replace('\\', '/'));
}

}

但是,这并不独立于文件系统。我的意思是我知道我有什么目标系统,并且我不想在这里涵盖所有源系统。

我该怎么做?我的意思是,最后的手段当然是使用 String 而不是 Path,但恕我直言,这有点蹩脚。

最佳答案

这适用于所有平台:

@Override
public void serialize(Path path, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException
{
jsonGenerator.writeString(path.toString().replace(File.separator, "/"));
}

使用处理文件的 Java 库,您可以在所有平台上安全地使用/(斜杠,而不是反斜杠)。库代码在内部处理将事物转换为特定于平台的路径。话虽如此,无论稍后使用什么操作系统读取路径都能够正确构建它。

关于特定文件系统的 Java 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36079582/

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