System.getProperty("file.separator") = java.io.File.separator
なんとはなしにRestletのソース読んでたら、java.io.File.separatorなる定数があることに気づきました。
これ、java.lang.System#getPropertyで取得できるシステムプロパティのfile.separatorと等価なのですが、毎回getPropertyするよりは、定数を参照した方が良いので、これを使わない手はないと思います。
他にも、path.separatorも用意されていて、以下のようになっています。
定数 | 型 | 対応するシステムプロパティキー |
java.io.File.separatorChar | char | file.separator |
java.io.File.separator | java.lang.String | file.separator |
java.io.File.pathSeparatorChar | char | path.separator |
java.io.File.pathSeparator | java.lang.String | path.separator |
ちなみに、テストソースはこんな感じ。
public class Test { public static void main(String[] args) throws Exception { System.out.println("System.getProperty(file.separator) = " + System.getProperty("file.separator")); System.out.println("java.io.File.separator = " + java.io.File.separator); System.out.println("System.getProperty(path.separator) = " + System.getProperty("path.separator")); System.out.println("java.io.File.pathSeparator = " + java.io.File.pathSeparator); } }
結果はこんな感じ。
System.getProperty(file.separator) = \ java.io.File.separator = \ System.getProperty(path.separator) = ; java.io.File.pathSeparator = ;
ところで、他にもこういうのがあるのでは?と思い、調べてみることにしました。
どうやって調べるか考えたのですが、java.io.File.separatorCharのJavadocに
関連項目:
System.getProperty(java.lang.String)
というのがあったので、これを利用して、「@see java.lang.System#getProperty(java.lang.String)」をJava SE5のソースからgrepしてみることに。
すると、いくつかはgrepでヒットしたのですが、あくまでそれはgetPropertyメソッドを使っている個所であって、エイリアスの定数というわけではありませんでした。残念。
しっかし、JavaAPIも奥が深いというか、知らないことがほんと多いです。