测试Path.relativize()是否会成功?

时间:2016-06-27 21:27:09

标签: java nio

方法java.nio.file.Path.relativize()会向IllegalArgumentException抛出一些参数。

  

如果只有一个路径具有根组件,则无法构建相对路径。如果两个路径都有一个根组件,那么如果可以构造一个相对路径,它就是依赖于实现的。

例如,在Windows上,如果两个参数引用不同驱动器上的路径,则该方法可能会失败。

在调用Path.relativize()之前,是否存在操作系统中立的方法来测试特定参数是否合法,以避免依赖异常来处理非例外情况?

1 个答案:

答案 0 :(得分:2)

它表示"依赖于实现" ,所以不,但做出一些假设,你可以检查它们是否共享相同的根和文件系统。

如果路径没有根组件,则

getRoot()返回null;对于类似Linux的操作系统,

Path返回/C:\适用于Windows。如果其他路径具有不同的根(例如D:\),则relativize()将失败。

因此,如果两个FileSystem对象都是相同的{{3}},并且两者都是相对的(getRoot()返回null),或者两者都具有相同的根组件,{{1}应该工作正常。

不完美的解决方案,因为我们不知道"实施" 的想法,但足够接近?