3

我在项目的资源文件夹 src/main/resources 中有一个文件 abc.txt。我有以下代码片段,它应该提供文件。

get {
    path("hello") {
      complete {
        val s = Source.file(new File("src/main/resources/abc.txt"), 1024)
        s
      }
    }

我什至尝试了以下

get {
path("hello") {
  complete {
    getFromFile("src/main/resources/abc.txt")
  }
}

在这两种情况下,我都会收到一条错误消息

routing.Route 类型的表达式不符合预期的类型 toResponseMarshallable

我唯一的要求是,当我收到此请求时,我应该能够提供文件。我用谷歌搜索了我找不到的解决方案。注意:我是 Scala/Akka 初学者

4

3 回答 3

4

getFromFile是一个指令,而complete期望一个响应。

正确的解决方案应该是:

val route: Route =
  path("hello") {
    getFromResource("abc.txt")
  }
于 2015-12-05T18:58:46.290 回答
1

你在这里工作在两个不同的世界。resources更容易使用calasspath.

    val resourceStream: InputStream = getClass.getResourceAsStream("/"src/main/resources/abc.txt")
    val data: String = scala.io.Source.fromInputStream(resourceStream).getLine.mkString
    data
于 2015-12-04T14:15:24.680 回答
0

使用getFromFile非常接近,但它已经定义了一个 HTTP 方法,所以你不需要自己做。像这样的东西应该工作:

val route: Route =
  path("hello") {
    getFromFile("src/main/resources/abc.txt")
  }
于 2015-12-04T14:12:44.513 回答