以下是两个使用Akka Stream的示例代码:
示例1:从文件读取行并将其打印到控制台
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl._
import scala.concurrent.ExecutionContext.Implicits.global
object FileToConsoleExample extends App {
implicit val system = ActorSystem("FileToConsoleExample")
implicit val materializer = ActorMaterializer()
val source = FileIO.fromPath(Paths.get("path/to/input.txt"))
val flow = Framing.delimiter(ByteString("\n"), maximumFrameLength = 256, allowTruncation = true)
.map(_.utf8String)
val sink = Sink.foreach(println)
val graph = source.via(flow).to(sink)
graph.run()
.onComplete(_ => system.terminate())
}
示例2:从HTTP服务器接收请求并将响应写入文件
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.stream.ActorMaterializer
import akka.stream.scaladsl._
import scala.concurrent.ExecutionContext.Implicits.global
object HttpToFileExample extends App {
implicit val system = ActorSystem("HttpToFileExample")
implicit val materializer = ActorMaterializer()
val request = HttpRequest(uri = "http://example.com")
val flow = Http().outgoingConnection("example.com")
val sink = FileIO.toPath(Paths.get("path/to/output.txt"))
val graph = Source.single(request).via(flow).to(sink)
graph.run()
.onComplete(_ => system.terminate())
}
这些示例分别演示了如何从文件中读取数据并将其打印到控制台,以及如何从HTTP服务器接收请求并将响应写入文件。您可以根据自己的需求进行修改和扩展这些示例。