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

2022-09-01 05:51:55

旧的,或多或少已弃用的API有一个方法,如果指向文件系统中的现有方法,则返回true,但我找不到任何可比较的方法:java.io.FileexistsFilejava.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  

当然,我可以将背面转换为a,但我想有更好的方法来做到这一点。pathFile

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


答案 1

使用类:Files

Files.exists(path);

编辑:为了回答你接下来的问题,我认为该方法在另一个类中的原因是一个接口,并且他们希望提供一个实现(类似于将排序方法放在类中而不是接口中)。PathCollectionsList

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

在这里阅读Oracle的Javadocs


答案 2

在实用程序类文件中查找包:

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