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

Java 测试Path.relativize()是否会成功?,java,nio,Java,Nio,该方法将抛出带有一些参数的IllegalArgumentException 如果只有一个路径具有根组件,则无法构造相对路径。如果两条路径都有根组件,那么如果可以构造相对路径,则依赖于实现 例如,在Windows上,如果两个参数引用不同驱动器上的路径,则该方法可能会失败 在调用Path.relative()之前,是否有一种与操作系统无关的方法来测试特定参数是否合法,以避免依赖异常来处理非异常情况?它说它是“依赖于实现的”,所以不是,但在做出一些假设后,您可以检查它们是否共享相同的根和文件系统 如果

该方法将抛出带有一些参数的
IllegalArgumentException

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

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

在调用
Path.relative()
之前,是否有一种与操作系统无关的方法来测试特定参数是否合法,以避免依赖异常来处理非异常情况?

它说它是“依赖于实现的”,所以不是,但在做出一些假设后,您可以检查它们是否共享相同的根和文件系统

如果路径没有根组件,则返回null,否则对于类似Linux的操作系统返回
/
,对于Windows返回
C:\
。如果另一个路径具有不同的根(例如
D:\
),则
relatiize()
将失败

因此,如果两个对象都是相同的,并且都是相对的(
getRoot()
返回null),或者都有相同的根组件,
relativize()
应该可以正常工作

不是完美的解决方案,因为我们不知道“实现”是怎么想的,但足够接近了吗