シェルスクリプトなどでよく使用する basename, dirname をJavaで実現するサンプルコードを以下に記します。
サンプルソースは、basename(ファイル名取得)とdirname(ディレクトリ取得)のサンプルソースになります。
FileInfo.java UTF-8, LF
public class FileInfo {
public static void Usage() {
String me = new Object(){}.getClass().getEnclosingClass().getName();
System.err.println("Usage: java " + me + "path/to/file");
}
public static void main(String args[]) {
if (args.length != 1) {
Usage();
System.exit(1);
}
String filename, dirname, extension;
File f = new File(args[0]);
System.out.println("Path: " + f.getPath());
System.out.println("Parent(dirname): " + f.getParent());
System.out.println("Name(basename): " + f.getName());
}
}
上記のソースは、ファイル名を引数で渡し、ディレクトリ部分とファイル名部分を分けて表示する動作になります。
getParentメソッドがdirname, getNameメソッドがbasenameに対応します。
上記サンプルソースをコンパイルし、実際に動作させた時の出力です。
sakura@aspire:~$ javac FileInfo.java sakura@aspire:~$ echo $? 0 sakura@aspire:~$ java FileInfo Usage: java FileInfopath/to/file sakura@aspire:~$ echo $? 1 sakura@aspire:~$ java FileInfo /path/to/file.txt Path: /path/to/file.txt Parent(dirname): /path/to Name(basename): file.txt sakura@aspire:~$ echo $? 0 sakura@aspire:~$
尚、動作環境はUbutnuを使用しました。
以上、Javaでbasename, dirnameと同等の操作をするFileクラスのメソッドについての説明でした、