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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

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

在Linux上:

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

在Windows上:

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

我大概可以编写一些东西来解决这个问题,但我只想知道是否有人知道Java中提供的内置类来解决这个问题。或者有谁曾经遇到这个问题?你是如何解决它的?

提问于
用户回答回答于

有一些基本的文件系统类(即公司的Java 7,但在此之前它,他们也同样存在)暴露isAbsolute(),但他们不是公众-所以你不应该使用它们,即使你做你的代码会充满反射垃圾 - 而且只有“正确的”操作系统才被包含在JRE中,因此无论如何你都必须对它们进行编码。

以下是isAbsolute(...)的Java 7实现,以帮助您入门。请注意,File.getPrefixLength()是包私有的。

Win32FileSystem

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);
}
用户回答回答于

扫码关注云+社区