getPath()
Java における、、getAbsolutePath()
およびの違いは何ですかgetCanonicalPath()
?
それぞれいつ使うのでしょうか?
ベストアンサー1
次のファイル名を検討してください:
C:\temp\file.txt
- これはパスであり、絶対パスであり、正規パスです。
.\file.txt
- これはパスです。絶対パスでも正規パスでもありません。
C:\temp\myapp\bin\..\\..\file.txt
- これはパスであり、絶対パスです。正規のパスではありません。
正規パスは常に絶対パスです。
パスを正規パスに変換すると、絶対パスになります (通常は現在の作業ディレクトリを追加するので、たとえば はに./file.txt
なりますc:/temp/file.txt
)。ファイルの正規パスは、パスを「浄化」し、 などの要素を削除して解決し..\
、シンボリックリンクを解決します (UNIX の場合)。
また、nio.Paths を使用した次の例にも注意してください。
String canonical_path_string = "C:\\Windows\\System32\\";
String absolute_path_string = "C:\\Windows\\System32\\drivers\\..\\";
System.out.println(Paths.get(canonical_path_string).getParent());
System.out.println(Paths.get(absolute_path_string).getParent());
両方のパスは同じ場所を参照しますが、出力はまったく異なります。
C:\Windows
C:\Windows\System32\drivers