【Java】FileとPath(+Files)
FileクラスとPathインタフェース(+Filesクラス)のどちらを使えばよいのか
に書いたように、PathはFileで可能な操作は基本的に可能
はじめに、似たような機能を持つのにそもそもパッケージが異なるFileクラスがjava.ioなのに対して、Pathインタフェースはjava.nio.file
nはnewで、PathインタフェースはJava7で追加されたもの。つまり、Oracleはすでにある機能を改めて新しいAPIを作成した
結論
おそらく、Pathが追加されるタイミングで、FileクラスのtoPath()が追加された。
違い1(エラー処理)
var file = new File("");
var path = Paths.get("");
boolean isDeleted = file.delete(); // ①
Files.delete(path); // ②
上記のコードの場合、①は削除できたか否かを返すが、②はコンパイルエラー(IOExceptionの処理が必要)が発生する。つまり、削除を試みたが削除できなかった原因がわかる。
違い2(メタデータ)
例)ファイルの所有者:Files.getOwner(Path path, LinkOption... options)
違い3(パフォーマンス)
例)ディレクトリに多数のファイルがあった場合