Java nio:如何将扩展添加到绝对路径?

jm1*_*890 13 java nio path

这感觉它应该是直截了当的东西,但我似乎可以找到一个优雅的解决方案,而无需转换File.

给出一个 Path

Path path = Paths.get("/a/b/foo")
Run Code Online (Sandbox Code Playgroud)

怎么做路径/a/b/foo.barsubpath无论原始路径是相对路径还是绝对路径,都将返回相对路径.

我宁愿不必使用额外的库.但是,也许这是唯一的方法?

And*_*eas 22

要更改a的文件名Path,请使用以下resolveSibling()方法之一:

在需要用其他文件名替换文件名的情况下,这很有用.

使用此方法可确保结果Path对象FileSystem与源Path对象相同.

所以,要添加扩展".bar"Path:

path = path.resolveSibling(path.getFileName() + ".bar");
Run Code Online (Sandbox Code Playgroud)

  • @Noumenon你很困惑。该代码“添加了”扩展名。它不会改变它。如果path = Paths.get(“ / some / foo”),则path.getFileName()为foo,导致代码执行path = path.resolveSibling(“ foo.bar”),意味着代码会将`path`更改为`/ some / foo.bar`。请参见[IDEONE](https://ideone.com/2cPpQw)以获取证明。 (2认同)