如何检查Scala中是否存在路径或文件

Low*_*ong 55 scala

如何检查Scala中是否存在类似于Python的路径/文件?以下示例:

os.path.exists("/home")
Out[4]: True
Run Code Online (Sandbox Code Playgroud)

Vla*_*eev 105

从Java 7开始,更好的方法是

scala> import java.nio.file.{Paths, Files}
import java.nio.file.{Paths, Files}

scala> Files.exists(Paths.get("/tmp"))
res0: Boolean = true
Run Code Online (Sandbox Code Playgroud)

  • @WalrustheCat,NIO.2 API是不推荐使用的旧`File` API的替代品.所以,首先,你应该更喜欢它,因为它会帮助旧的API死掉.其次,NIO.2更强大.例如,使用此API,您可以选择如何处理符号链接.或者您可以检查(使用相同的`Files.exists()`调用)在另一个文件系统中存在路径(例如,在zip存档中). (12认同)
  • 出于好奇,这怎么样更好? (3认同)

Low*_*ong 52

好吧,抱歉,我找到了自己问题的答案:

scala> new java.io.File("/tmp").exists
res0: Boolean = true
Run Code Online (Sandbox Code Playgroud)


Car*_*das 5

这是一个老问题,但是我仍然需要它进行一些更新。您应该使用isFileisRegularFile代替,exists因为exists如果是文件或目录,则不要考虑,如果目录名称相同,可能会误导应用程序。

使用java.io

new java.io.File("/tmp/sample.txt").isFile
Run Code Online (Sandbox Code Playgroud)

使用java.nio

java.nio.file.Files.isRegularFile(java.nio.file.Paths.get("/tmp/sample.txt"))
Run Code Online (Sandbox Code Playgroud)


mar*_*kus 5

scala.reflect.io.File("/tmp/sample.txt").exists
Run Code Online (Sandbox Code Playgroud)

也有效。