Java の getPath()、getAbsolutePath()、getCanonicalPath() の違いは何ですか? 質問する

Java の getPath()、getAbsolutePath()、getCanonicalPath() の違いは何ですか? 質問する

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

おすすめ記事