src/org/nutz/lang/util/Disks.java
public static String getIntersectPath(String ph0, String ph1, String dft) {
        // 木可能有交集
        if (null == ph0 || null == ph1)
            return dft;

        String[] ss0 = Strings.splitIgnoreBlank(ph0, "[\\\\/]");
        String[] ss1 = Strings.splitIgnoreBlank(ph1, "[\\\\/]");

        int pos = 0;
        int len = Math.min(ss0.length, ss1.length);
        for (; pos < len; pos++) {
            if (!ss0[pos].equals(ss1[pos]))
                break;
        }

        // 木有交集
        if (pos == 0)
            return dft;

        // 得到
        String re = Lang.concat(0, pos, "/", ss0).toString();

        // 需要补全后面的 "/" 吗
        if (ph0.endsWith("/") && ph1.endsWith("/"))
            return re + "/";

        return re;
    }
public static String getIntersectPath(String ph0, String ph1, String dft) {
        // 木可能有交集
        if (null == ph0 || null == ph1)
            return dft;

        String[] ss0 = Strings.splitIgnoreBlank(ph0, "[\\\\/]");
        String[] ss1 = Strings.splitIgnoreBlank(ph1, "[\\\\/]");

        int pos = 0;
        int len = Math.min(ss0.length, ss1.length);
        for (; pos < len; pos++) {
            if (!ss0[pos].equals(ss1[pos]))
                break;
        }

        // 木有交集
        if (pos == 0)
            return dft;

        // 得到
        String re = Lang.concat(0, pos, "/", ss0).toString();

        // 需要补全后面的 "/" 吗
        if (ph0.endsWith("/") && ph1.endsWith("/"))
            return re + "/";

        return re;
    }
public static String getIntersectPath ( String ph0 , String ph1 , String dft ) { // 木可能有交集
 if ( null == ph0 || null == ph1 ) return dft ; String [ ] ss0 = Strings . splitIgnoreBlank ( ph0 , "[\\\\/]" ) ; String [ ] ss1 = Strings . splitIgnoreBlank ( ph1 , "[\\\\/]" ) ; int pos = 0 ; int len = Math . min ( ss0 . length , ss1 . length ) ; for ( ; pos < len ; pos ++ ) { if ( ! ss0 [ pos ] . equals ( ss1 [ pos ] ) ) break ; } // 木有交集
 if ( pos == 0 ) return dft ; // 得到
 String re = Lang . concat ( 0 , pos , "/" , ss0 ) . toString ( ) ; // 需要补全后面的 "/" 吗
 if ( ph0 . endsWith ( "/" ) && ph1 . endsWith ( "/" ) ) return re + "/" ; return re ; }
获取两个路径从头部开始计算的交集

@param ph0
路径1
@param ph1
路径2
@param dft
如果两个路径完全没有相交，那么返回什么
@return 两个路径的交集
获取两个路径从头部开始计算的交集