18

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 で提供される組み込みクラスを誰かが知っているかどうかを知りたかっただけです。または、誰かがこの問題に遭遇したことがありますか?そして、どのように解決しましたか?

ありがとう!

4

4 に答える 4

9

Java 7 では:

new File(path).isAbsolute()
于 2015-04-23T21:50:31.750 に答える
3

Apache FilenameUtil を使用したこれに対する私のクラック -

   public static boolean isAbsolute(final String path) {
      return FilenameUtils.getPrefixLength(path) != 0;
   }

技術的には、これは !relative を返します。これは私の目的には問題ありません。

于 2014-07-30T00:15:56.233 に答える
-1

私はこれを使用することになりました(Java 6で):

private static boolean testPath(String path) {
    int prefixLen = FilenameUtils.getPrefixLength(path);
    if (testPathWin(path, prefixLen) || testPathLinux(prefixLen))
        return true;
    else
        return false;
}

private static boolean testPathWin(String path, int prefixLen) {
    if (prefixLen == 3)
        return true;
    File f = new File(path);
    if ((prefixLen == 2) && (f.getPath().charAt(0) == '/'))
        return true;
    return false;
}

private static boolean testPathLinux(int prefixLen) {
    return (prefixLen != 0);
}
于 2013-09-11T11:09:46.947 に答える