2017-07-05 1 views
-1

Nous essayons de lire les fichiers de flux akka. Les fichiers contiennent des journaux et l'application est simple pour écrire les journaux dans de nouveaux fichiers. Mais quand, exécutez notre programme, nous obtenons des résultats inattendus. Notre code est ci-dessous:Impossible de lire les fichiers en utilisant akka flux

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 contient 1000 enregistrement en ligne, mais output de ce programme est: Success(Done), 0 bytes read., nous ne bénéficient toujours pas le programme réel.

Répondre

3

Lorsque je place des chemins de travail connus vers des fichiers, cela fonctionne dans mon REPL.

Vous devez vous assurer que le chemin d'accès à votre fichier source est correct et vous devez placer un chemin de destination correct dans un fichier .

En outre, vous aurez envie d'utiliser toMat au lieu de to de sorte que vous pouvez obtenir à la fois le IOResult des opérations de lecture, ainsi que les opérations d'écriture. (Je recommande de faire _ zip _ de sorte que vous obtenez un Future[(IOResult, IOResult)]).

+0

Hey fichier @Viktor est sur le bon chemin, mais je ne suis pas sûr, que se passera-t-il? –

+0

@ harmeet-singh-taara vérifiez votre chemin de destination - "." n'est pas bon, veuillez utiliser un nom de fichier à la place. – lutzh

+0

@Viktor, nous changeons notre code comme 'FileIO.toPath (Paths.get (" home/harmeet/logs.log "), Set (CREATE, WRITE, APPEND)), mais la même sortie se produit. –