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}; } }