【问题标题】:How to check if path or file exist in Scala如何检查Scala中是否存在路径或文件
【发布时间】:2014-02-06 06:20:54
【问题描述】:

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

os.path.exists("/home")
Out[4]: True

【问题讨论】:

    标签: scala


    【解决方案1】:

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

    scala> import java.nio.file.{Paths, Files}
    import java.nio.file.{Paths, Files}
    
    scala> Files.exists(Paths.get("/tmp"))
    res0: Boolean = true
    

    【讨论】:

    • 出于好奇,这样更好吗?
    • @WalrustheCat,NIO.2 API 旨在替代已弃用的旧 File API。所以,首先,你应该更喜欢它,因为它会帮助旧的 API 消亡。其次,NIO.2 更强大。例如,使用此 API,您可以选择如何处理符号链接。或者您可以检查(使用相同的 Files.exists() 调用)另一个文件系统(例如 zip 存档)中是否存在路径。
    • @VladimirMatveev 为什么 Files.exists(Paths.get("/tmp/subfolder")) 当 Files.exists(Paths.get("/tmp")) 给出 true 时给出 false?跨度>
    • @Innovator-programmer 没有更广泛的背景很难说,但这似乎意味着您在/tmp 中没有subfolder 目录。我个人觉得这很合乎逻辑)
    • @VladimirMatveev:当然在 /tmp 文件夹中有很多嵌套文件夹,所以我给出了我想检查文件是否存在的完整路径,但它给了我 false 。不知道为什么。
    【解决方案2】:

    好吧,对不起,我找到了自己问题的答案:

    scala> new java.io.File("/tmp").exists
    res0: Boolean = true
    

    【讨论】:

    • 为什么 Files.exists(Paths.get("/tmp/subfolder")) 当 Files.exists(Paths.get("/tmp")) 给出 true 时给出 false?
    【解决方案3】:

    这是一个老问题,但我仍然需要它需要一些更新。您应该使用isFileisRegularFile 而不是exists,因为exists 不考虑是文件还是目录,如果存在同名目录,可能会误导应用程序。

    使用 java.io

    new java.io.File("/tmp/sample.txt").isFile
    

    使用 java.nio

    java.nio.file.Files.isRegularFile(java.nio.file.Paths.get("/tmp/sample.txt"))
    

    【讨论】:

      【解决方案4】:
      scala.reflect.io.File("/tmp/sample.txt").exists
      

      同样有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多