getName()
、getAbsoluteFile()
およびgetCanonicalFile()
getPath()
、getAbsolutePath()
およびgetCanonicalPath()
3 に答える
簡潔なバージョン:
File.getName()
ファイル名の部分を文字列として返します。つまり、最後のファイル セパレータの後のビットです。File.getPath()
完全なパス名を文字列として返します。File.getAbsolutePath()
現在相対パスである場合、パスを絶対パスにマッピングした後、完全なパス名を文字列として変換します。パスの検証は行われません。File.getAbsoluteFile()
File.getAbsolutePath()
は、結果が であることを除いて、と同じことを行いFile
ます。File.getCanonicalPath()
パスを絶対パス (現在相対パスの場合) にマップし、それを正規化しようとします。このプロセスは OS に依存しますが、通常はシンボリック リンクをたどり、「.」、「..」、および空の名前を正規の対応する名前に置き換える必要があります。結果は、正規化されたパス文字列です。File.getCanonicalFile()
File.getCanonicalPath()
は、結果が であることを除いて、 と同じことを行いFile
ます。
File
最初の 4 つは、元のオブジェクトのテキストベースの操作です。パスのどの部分もファイル システム内の何かに対応していることを確認しようとはしません。
最後の 2 つは、File
. パスに存在しないディレクトリ、壊れたリンク、読み取れないディレクトリなどが含まれている場合、IOException が発生する可能性があります。
詳細については、それぞれのメソッドの javadoc リンクに従ってください。
2020 年の注- API を使用する新しいコードをまだカットしている場合は、 代わりFile
に API の使用を真剣に検討する必要があります。java.nio.file
- オブジェクトがオブジェクト
Path
に最も直接対応するFile
Files
およびクラスは、オブジェクトPaths
を操作する多数の静的メソッドを提供します。Path
新しい API の利点は次のとおりです。
- 多くの操作で例外がスローされ、失敗した理由が通知されるようになりました。
- さまざまなファイル システム セマンティクスがサポートされています。たとえば、さまざまな種類のアクセス制御、ファイル属性など。
- ディレクトリ ウォッチャー、ファイル ツリー トラバーサルなどのサポートがあります。
- JVM 内に実装された仮想ファイル システムがサポートされています。
- Windowsでの のいくつかの奇妙な動作(互換性の理由
File
で修正できませんでした) が解決されました。File
Java API には、File オブジェクトとそれに含まれるすべてのメソッドの完全な説明があります。
getName(): http://docs.oracle.com/javase/7/docs/api/java/io/File.html#getName ()
getCanonicalPath(): http://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath ()
getAbsolutePath(): http://docs.oracle.com/javase/7/docs/api/java/io/File.html#getAbsolutePath ()
getAbsoluteFile(): http://docs.oracle.com/javase/7/docs/api/java/io/File.html#getAbsoluteFile ()
getCanonicalFile(): http://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalFile ()
このページでは、これらの 6 つの方法すべての違いについて明確に説明しています。 canonical-path.html