2017-07-05 1 views
-1

Wir versuchen, Dateien aus akka-Streams zu lesen. Dateien enthalten Protokolle und die Anwendung ist einfach zum Schreiben der Protokolle in neue Dateien. Aber wenn wir unser Programm ausführen, bekommen wir eine unerwartete Ausgabe. Unser Code ist unter:Dateien können nicht mit dem akka-Stream gelesen werden

class LogsAkkaStream { 

    implicit val system = ActorSystem("AkkaStreams") 
    implicit val ec = system.dispatcher 
    implicit val materializer = ActorMaterializer() 

    val source: Source[ByteString, Future[IOResult]] = FileIO.fromPath(Paths.get("/home/harmeet/workspace/mylogs.logs")) 
    val sink: Sink[ByteString, Future[IOResult]] = FileIO.toPath(Paths.get("."), Set(CREATE, WRITE, APPEND)) 
    val runnableGraph: RunnableGraph[Future[IOResult]] = source.to(sink) 

    runnableGraph.run().foreach { result => 
    println(s"${result.status}, ${result.count} bytes read. ") 
    } 
} 

object LogsAkkaStream extends App { 
    new LogsAkkaStream 
} 

mylogs.logs enthält 1000 Linienaufzeichnung, aber output dieses Programms ist: Success(Done), 0 bytes read. Dennoch sind wir nicht das eigentliche Programm zu bekommen.

Antwort

3

Wenn ich bekanntermaßen funktionierende Pfade zu Dateien einfüge, funktioniert es in meiner REPL.

Sie sollten sicherstellen, dass der Pfad zu Ihrer Quelldatei korrekt ist, und Sie möchten einen korrekten Zielpfad zu einer Datei.

Sie sollten auch toMat anstelle von to verwenden, damit Sie sowohl das IOResult der Lesevorgänge als auch die Schreibvorgänge abrufen können. (Ich würde empfehlen, _ zip _ zu tun, so erhalten Sie eine Future[(IOResult, IOResult)]).

+0

Hey @Viktor Datei ist auf dem richtigen Weg, aber ich bin mir nicht sicher, was wird passieren? –

+0

@ harmeet-singh-taara überprüfe deinen Zielpfad - "." ist nicht gut, bitte benutze stattdessen einen Dateinamen. – lutzh

+0

@Viktor, wir ändern unseren Code wie 'FileIO.toPath (Paths.get (" home/harmeet/logs.log "), setzen (CREATE, WRITE, APPEND))', aber immer noch gleiche Ausgabe. –

Verwandte Themen