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;
    }
获取两个路径从头部开始计算的交集

@param ph0
路径1
@param ph1
路径2
@param dft
如果两个路径完全没有相交，那么返回什么
@return 两个路径的交集