java で _splitpath()

DOS時代の_splitpath()をScalaでは作っていたのに、Javaでは作っていなかったことに気がつきました。
http://d.hatena.ne.jp/a-san/20100306#p1
結構、いろんな場面で重宝します。
Javaではこんな感じかな。

public class FileUtil {
    /**
        パスを分割する。
        元のパスに戻すには、結果の文字列をすべて足せば戻るようにしています。
        なので、拡張子には"."が付いていたり、パスの末尾にも"\"が付きます。
        "C:\\dir\\dir\\dir\\filename.ext"    => {"C:", "\\dir\\dir\\dir\\", "filename", ".ext"}
        "C:/dir/dir/dir/filename.ext"        => {"C:", "/dir/dir/dir/", "filename", ".ext"}
        "/dir/dir/dir/filename.ext"          => {"", "/dir/dir/dir/", "filename", ".ext"}
        "filename.ext"                       => {"", "", "filename", ".ext"}
        "filename"                           => {"", "", "filename", ""}
     */
    public static String[] splitPath(String fname) {
        String drive = "";
        String path = "";
        String name = fname;
        String ext = "";
        int drive_pos = name.indexOf(':');
        if (drive_pos != -1) {
            drive = name.substring(0, drive_pos+1);
            name = name.substring(drive_pos+1);
        }
        int path_pos = Math.max(name.lastIndexOf('\\'), name.lastIndexOf('/'));
        if (path_pos != -1) {
            path = name.substring(0, path_pos+1);
            name = name.substring(path_pos+1);
        }
        int ext_pos = name.lastIndexOf('.');
        if (ext_pos != -1) {
            ext = name.substring(ext_pos);
            name = name.substring(0, ext_pos);
        }
        return new String[]{drive, path, name, ext};
    }
}