如何使用Java 7的新File API检查路径是否指向现有文件?

soc*_*soc 34 java filesystems file path java-7

旧的,或多或少已弃用的java.io.FileAPI有一个方法exists,如果File指向文件系统中的现有API ,则返回true ,但我找不到任何类似的方法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  
Run Code Online (Sandbox Code Playgroud)

当然我可以将path背面转换为a File但我想有更好的方法可以做到这一点.

编辑:好的,感谢所有人指出Files.exists.有人知道为什么它变得更复杂(比有一个简单的exists方法Path)?

Ope*_*uce 58

使用Files课程:

Files.exists(path);

编辑:为了回答你的后续问题,我认为该方法在另一个类中的原因是它Path是一个接口,并且他们想要提供一个实现(类似于将排序方法放在Collections类而不是List接口中).

与问题没有直接关系,但根据棘轮怪,该方法还有一个可选的varags参数,它决定了符号链接的处理方式

在这里阅读Oracle的Javadocs.


rat*_*eak 9

查看实用程序类文件包:

Files.exists(Path path,LinkOption... options)
Run Code Online (Sandbox Code Playgroud)