【问题标题】:Paths.get - specify a platform?Paths.get - 指定一个平台?
【发布时间】:2019-06-04 18:48:58
【问题描述】:

我正在开发一个同时在 Mac 和 Windows 上开发的应用程序。我们正在生成一些文件路径,并希望生成的路径都是带有正斜杠的 UNIX 风格。在 Windows 机器上调用 Paths.get(...) 会产生带有反斜杠的路径,但我希望它产生带有正斜杠的路径。

我找不到有关“设置”或指定要使用的路径分隔符的文档。

【问题讨论】:

  • 为什么? Paths 正在基于平台做正确的工作
  • 我们生成此路径以从远程服务器获取数据。他们指定给定的路径必须是 UNIX 格式。
  • 那么我建议通过replaceAll运行String结果

标签: java scala path


【解决方案1】:

前段时间我也试图找到它,但这是不可能的。这是Paths.get(...)中的静态方法

java.nio.file.FileSystems#getDefault

返回静态最终字段

static final FileSystem defaultFileSystem = defaultFileSystem();

并且java.nio.file.FileSystems.DefaultFileSystemHolder#defaultFileSystem 检测到您的文件系统。

但在FileSystem 的实例中,斜线的类型是硬编码的: https://github.com/frohoff/jdk8u-jdk/blob/master/src/windows/classes/sun/nio/fs/WindowsFileSystem.java#L249

所以我认为对你来说最简单的方法是使用类似https://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html

【讨论】:

  • 谢谢!我怀疑这是不可能的。我们会找到一个替代方案,也许是您链接的那个。
猜你喜欢
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 2011-03-10
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多