除非终止,否则Scala将来不会写入资源目录

时间:2019-06-04 19:10:31

标签: scala akka mallet

我有一个Akka服务器正在询问演员的槌文件(一些输出)。 但是,在槌演员代码中,要完成几个步骤。 在其中多次获取,修改文件,创建新文件并将其保存在资源目录中的次数。

我需要按顺序运行actor,所以我在调用future时使用map。 但是,该作业正在获取NullPointerException,因为没有用于下一个将来的文件。 而且,一旦我停止服务器。所有文件都在资源目录中生成。

个人将来完成后,我需要资源目录中的文件。请建议

下面是我的服务器的代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<form method="post" enctype="multipart/form-data">
    <div align="center">
        <label class="selectCSV">Select the CSV file:</label>
        <input type="file" name="file" />
        <br/><br/>
        <input type="submit" name="submit_exercises" value="Import" class="btn btn-info" />
    </div>
</form>
</body>
</html>

下面是接收功能的代码。

lazy val routes: Route = apiRoutes
Configuration.parser.parse(args,Configuration.ConfigurationOptions()) match {
    case Some(config) =>
      val serverBinding: Future[Http.ServerBinding] = Http().bindAndHandle(routes, config.interface, config.port)
      serverBinding.onComplete {
        case Success(bound) =>
          println(s"Server online at http://${bound.localAddress.getHostString}:${bound.localAddress.getPort}/")
        case Failure(e) =>
          log.error("Server could not start: ", e)
          system.terminate()
      }
    case None =>
      system.terminate()
  }
  Await.result(system.whenTerminated, Duration.Inf)
}

1 个答案:

答案 0 :(得分:0)

看来我自己也有答案。 问题是我试图在资源目录中写入文件并读回文件。为了解决此问题,我在tmpDir中写入了文件,并使用bufferreader而不是源代码将其读回。并认为它有效。