旧的,或多或少已弃用的java.io.File
API有一个方法exists
如果File
指向文件系统中的现有方法,则返回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
当然我可以将path
转换回File
,但我想有更好的方法可以做到这一点。
编辑:好的,感谢大家指出Files.exists
。有人知道为什么它变得更复杂(比在exists
上使用简单的Path
方法)?
答案 0 :(得分:56)
使用Files
类:
Files.exists(path);
Path
是一个接口,他们想提供一个实现(类似于在{{中放置排序方法) 1}}类而不是Collections
接口)。
与问题没有直接关系,但根据棘轮怪,该方法还有一个可选的varags参数,它决定了符号链接的处理方式
答案 1 :(得分:9)
在实用程序类Files中查找包:
Files.exists(Path path,LinkOption... options)
答案 2 :(得分:2)
在新文件系统API中,所有文件操作都由Files类定义。大多数情况下,这些操作是根据其他操作实现的,或者它们委托给相应的文件系统提供程序。另一方面,Path接口是定义路径操作的位置。 Path只是用于定位文件的对象。如果要对文件执行操作,则调用相应的Files方法,指定用于查找文件的路径。
答案 3 :(得分:0)
无需为此添加新方法:使用Path.toFile()
获取文件,然后在其上运行exists
。