File.getCanonicalPath() と File.getAbsolutePath() の違い ― 2008年06月25日 18時26分47秒
そこで、もっと詳しい説明を見る事になる。「正規のパス名は、一意の絶対パスです。正規のパス名の正確な定義は、システムに依存します。」どうも、一意かどうかが、getCanonicalPath と getAbsolutePath の大きな違いらしい。しかも、システム依存とくるから不安に拍車がかかる。
さらに読み進めると「パス名から "." や ".." などの冗長名を削除し、シンボリックリンクを解決し (UNIX プラットフォームの場合)、ドライブ名の大文字小文字を適切に変換し (Microsoft Windows プラットフォームの場合) ます。」とある。この文章がいつも混乱の元になる。絶対パス名なのに、なぜ、"." や ".." などを削除するのかと。絶対パス名なら、本来これを含まないので、どの様な絶対パスなのかと混乱に陥る。
結局のところ、getCanonicalPath は リンクを追跡する getAbsolutePath だ。
最近のコメント