設定 パスがJava 7の新しいファイルAPIを持つ既存のファイルを指しているかどうかを確認する方法は?




java nio 使い方 (4)

そのために新しいメソッドを追加する必要はありません。ファイルを取得するためにPath.toFile()を使用し、その上にrun existsします。

古い、多かれ少なかれ廃止されたjava.io.File APIには、ファイルがファイルシステム内の既存のものを指し示していたにもかかわらずtrueを返すメソッドexistsしましたが、 java.nio.file.Path匹敵するメソッドは見つかりませんでした:

scala> import java.nio.file._
import java.nio.file._

scala> val path = Paths.get("/foo")
path: java.nio.file.Path = /foo

scala> path.
asInstanceOf     compareTo        endsWith         getFileName      getFileSystem    getName          getNameCount     
getParent        getRoot          isAbsolute       isInstanceOf     iterator         normalize        register         
relativize       resolve          resolveSibling   startsWith       subpath          toAbsolutePath   toFile           
toRealPath       toString         toUri  

もちろん、私はpathFile戻すことができFileが、これを行うにはより良い方法があると思います。

編集:OK、誰もがFiles.exists指摘してFiles.existsFiles.exists 。 誰かがなぜ複雑になったのかを知っていますか?


ユーティリティクラスを参照してくださいパッケージのFiles

Files.exists(Path path,LinkOption... options)

新しいファイルシステムAPIでは、すべてのファイル操作はFilesクラスによって定義されます。 ほとんどの場合、これらの操作は他の操作の観点から実装されるか、適切なファイルシステムプロバイダに委譲されます。 一方、Pathインタフェースは、パス操作が定義されている場所です。 パスは、ファイルの場所を特定するために使用されるオブジェクトです。 ファイルに対して操作を実行する場合は、適切なFilesメソッドを呼び出して、ファイルを見つけるためのパスを指定します。


Filesクラスを使用しFiles

Files.exists(path);

EDIT:あなたの後続の質問に答えるために、私は、メソッドが別のクラスにある理由は、 Pathがインターフェイスであり、実装を提供したいと考えている( Listインターフェイスの代わりにCollectionsクラスに並べ替えメソッドを置くのと同様)。

疑問に直接関係するものではありませんが、ラチェット・フリークには、メソッドに対するオプションのvarags引数もあります。この引数は、シンボリック・リンクの処理方法を決定します

OracleからJavadocを読んでください





java-7