是否会在Path.resolve中跨平台转发斜杠工作?

时间:2015-03-27 18:31:10

标签: java path

由于Path.resolve不接受字符串数组,因此可以传递包含多个路径组件的相对路径,例如"foo/bar/baz"

我的问题是

如果这种相对路径中的正斜杠在平台上按预期工作?

我在这里看到了一些答案,声称Java将正斜杠视为"通用分隔符",而不是支持它们的引用。

3 个答案:

答案 0 :(得分:2)

/应该是当今所有主要平台上的有效路径分隔符。例如,请参阅File.separator vs Slash in Paths(也许它甚至是重复的?)

如果你是迂腐类型,你可以使用FileSystem.getSeparator

请注意,您也可以

root.resolve(Paths.get("foo", "bar", "baz"));

答案 1 :(得分:1)

没有。 /对象中的典型Path称为名称分隔符。它在FileSystem对象中定义,Path是从该对象创建的。

您可以使用FileSystem#getSeparator()检索它。

  

返回名称分隔符,表示为字符串。

     

名称分隔符用于分隔路径字符串中的名称。一个   实现可能支持多个名称分隔符,在这种情况下   方法返回特定于实现的默认名称分隔符。这个   通过调用创建路径字符串时使用分隔符   toString()方法。

     

对于默认提供程序,此方法返回相同的内容   分隔符为java.io.File.separator

您可以使用Path#getFileSystem()检索Path的{​​{1}}。

据我所知,所有典型的文件系统都会使用FileSystem作为分隔符,但您可以编写自己的/实现,而不是。{/ p>

答案 2 :(得分:0)

您可以先FileSystem.getPath("foo", "bar", "baz")获取Path,而不是将String发送到Path.resolve(),您可以使用接受Path的重载版本。