Java的File.toString或Path.toString,带有特定的路径分隔符

Mal*_*off 11 java scala file relative-path path-separator

我正在Windows上开发Scala应用程序,我需要将文件的路径插入到HTML模板中.我使用Java ionio使用文件和路径.

/* The paths actually come from the environment. */
val includesPath = Paths.get("foo\\inc")
val destinationPath = Paths.get("bar\\dest")

/* relativeIncludesPath.toString == "..\\foo\\inc", as expected */
val relativeIncludesPath = destinationPath.relativize(includesPath)
Run Code Online (Sandbox Code Playgroud)

问题是输出relativeIncludesPath.toString包含反斜杠\作为分隔符 - 因为应用程序在Windows上运行 - 但由于路径要插入到HTML模板中,因此它必须包含正斜杠/.

由于我file/path.toStringUsingSeparator('/')在文档中找不到任何类似的东西,我现在正在帮助自己relativeIncludesPath.toString.replace('\\', '/'),我觉得这很有吸引力.

问题:有没有比使用替换更好的方法?

我也尝试与Java的URI,但它relativize不完整的.

小智 5

Path 接口的 Windows 实现在内部将路径存储为字符串(至少在OpenJDK 实现中),并在调用toString()时简单地返回该表示。这意味着不涉及任何计算,也没有机会“配置”任何路径分隔符。

出于这个原因,我得出结论,您的解决方案是目前解决您问题的最佳选择。