36

古い、多かれ少なかれ非推奨のAPIには、ファイルシステム内の既存のAPIを指している場合にtrueを返すjava.io.Fileメソッドがありましたが、次のような同等のメソッドが見つかりませんでした。existsFilejava.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  

もちろん、path元に戻すこともできますが、Fileそれを行うにはもっと良い方法があると思います。

編集:OK、指摘してくれたみんなに感謝しますFiles.exists。なぜそれがより複雑になったのか誰かが知っていますか(に単純なexists方法を持っているよりもPath)?

4

4 に答える 4

60

Filesクラスを使用します。

Files.exists(path);

編集:あなたの次の質問に答えるために、私はメソッドが別のクラスにある理由はそれがインターフェースであり、実装を提供したかったと思います(インターフェースの代わりにクラスにPathソートメソッドを置くのと同様です)。CollectionsList

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

ここでOracleのJavadocを読んでください

于 2011-05-21T21:17:31.047 に答える
9

パッケージのユーティリティクラスFilesを調べます。

Files.exists(Path path,LinkOption... options)
于 2011-05-21T21:19:47.913 に答える
2

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

于 2011-05-24T07:52:13.137 に答える
0

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

于 2011-05-21T21:15:47.997 に答える