如何从java.nio.Path获取路径字符串?

2022-08-31 17:39:25

用更多信息重写了问题

我有一些代码使用相对路径创建对象,如下所示:.稍后,我想获取路径字符串“..\folder\filename“从它(我在窗口上,所以反斜杠)。当我使用手动编译或从Eclipse运行此代码时,这工作正常。PathPaths.get("..", "folder").resolve("filename")

但是,当我使用Maven运行它时,它不再起作用了。该方法返回而不是实际的路径字符串。使用没有帮助。使用确实返回了我正在寻找的内容,但我觉得应该有一个仅使用API的解决方案。toString()[.., folder, filename]path.normalize()path.toFile().getPath()nio.path


答案 1

用:

Paths.get(...).normalize().toString()

另一个解决方案是:

Paths.get(...).toAbsolutePath().toString()

但是,您会得到奇怪的结果:在此处返回。您的文件系统是什么?Paths.get("/tmp", "foo").toString()/tmp/foo


答案 2

为了完成fge的答案,我会添加一些信息:

  1. normalize()只需删除路径中多余的字符串片段,如 或 ;它不在操作系统级别运行,或者为您提供相对路径的绝对路径...
  2. toAbsolutePath()相反,它给你的名字说什么,对象的绝对路径。但。。。Path
  3. toRealPath()还可以解析软链接和硬链接(是的,它们也存在于Windows上,因此请赢得用户,您也不能幸免)。因此,顾名思义,它为您提供了真正的路径。

那么什么是最好的呢?这要视情况而定,但就我个人而言,我使用了99%的情况。toRealPath()

来源: 官方 javadoc