Java:如何找出路径是否绝对,而不管操作系统如何

2022-09-02 21:48:35

在Java中,无论程序当前运行的平台如何,都可以确定给定的路径是否是绝对的。所以,我想要的可能是下面的例子:

在 Linux 上:

new File("/home/").isAbsolute() // Should return true.
new File("C:/My Documents").isAbsolute() // Should *also* return true.

在视窗上:

new File("C:/Documents").isAbsolute() // Should return true.
new File("/home/").isAbsolute() // Should *also* return true.

我可能会编写一些代码来解决这个问题,但我只是想看看是否有人知道Java中提供的内置类来解决这个问题。或者有人曾经遇到过这个问题吗?你是怎么解决的?

谢谢!


答案 1

不。

有一些底层的FileSystem类(这是Java 7,但它们也存在于它之前)公开了isAbsolute(),但它们不是公开的 - 所以你不应该使用它们,即使你做了你的代码也会充满反射垃圾 - 只有“正确”的操作系统包含在JRE中,所以无论如何你都必须围绕它们进行编码。

以下是 isAbsolute(...) 的 Java 7 实现,可帮助您入门。请注意,File.getPrefixLength() 是 package-private。

Win32文件系统

public boolean isAbsolute(File f) 
{
        int pl = f.getPrefixLength();
        return (((pl == 2) && (f.getPath().charAt(0) == slash))
                || (pl == 3));
}

UnixFileSystem

public boolean isAbsolute(File f) 
{
        return (f.getPrefixLength() != 0);
}

答案 2

在Java 7中:

new File(path).isAbsolute()

推荐