Scala即使在导入后也无法找到方法

时间:2016-04-09 19:30:49

标签: scala import

我在Scala接受了测试:

import java.nio.file._
import PathImplicits._
import java.io._

test("Paths should have a .write method to create files") {
    val p = Paths.get("test.txt")
    val contents = "This should write a file"
    try {
        p.write(contents)
        assert(new String(Files.readAllBytes(p)) == contents)
    }
    finally {
        Files.deleteIfExists(p)
    }
}

然而,当我运行它时,我收到一个错误:

value write is not a member of java.nio.file.Path
[error]       p.write(contents)

我错过了哪种导入?我认为java.nio.file._会涵盖这一点。

2 个答案:

答案 0 :(得分:1)

Path和Paths类都没有write方法。我想你正在寻找java.nio.file.Files.write方法。以下是修复代码的方法:

test("Paths should have a .write method to create files") {
    val p = Paths.get("test.txt")
    val contents = "This should write a file"
    try {
        Files.write(p, contents.getBytes) // consider using a charset here
        assert(new String(Files.readAllBytes(p)) == contents)
    }
    finally {
        Files.deleteIfExists(p)
    }
}

答案 1 :(得分:-1)

我不确定您是否缺少导入,此错误表示编译器无法像其他人提到的那样在类write上找到方法名Path。但是,这可能是导入问题的一种方法,您可能错过了对隐式转换的导入。在这种情况下,导入的代码看起来应该是这样的

implicit class PathImplicits(val p: Path) {
    def write(x: Any) = ???
}