質問

直しとかは出来ないんですか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の必要がありません。又は誰にもって来ないのですが。とんか?

よろしく!

役に立ちましたか?

解決

世界中の巨大フロアを揺ら.

である裏付 ファイルシステム クラスがJava7のものが存在し前まで)となisAbsolute()がない公共支援します。 使用していただかなくてもコードする全反射迷惑ならでは"正しい"OSのものが含まれまJREってコード化します。

ここでは、Java7の実装isAbsolute(...)を取得します。注意ファイルです。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);
}

他のヒント

Java7:

new File(path).isAbsolute()

私のクールなこのトFilenameUtil-

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

技術的にこに戻りつつあります!相対的です。る微です。

その結用(Java6):

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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top