代码之家  ›  专栏  ›  技术社区  ›  Arne Claassen

FileIO.toPath接收器完成时触发

  •  0
  • Arne Claassen  · 技术社区  · 7 年前

    source.alsoTo(FileIO.toPath(path))
    

    这用于缓存,也就是说,我正在将一个文件通过我的系统写入一个临时缓存位置。一旦缓存被写入,我想将它原子地移动到它的最终位置。

    源的使用者获得一个 Future

    1 回复  |  直到 7 年前
        1
  •  3
  •   Jeffrey Chung    7 年前

    而不是 alsoTo ,使用 alsoToMat mapMaterializedValue Sink

    val source: Source[ByteString, _] = ???
    
    val cachedSource =
      source
        .alsoToMat(FileIO.toPath(path))(Keep.right)
        .mapMaterializedValue { fileResult => // fileResult is a Future[IOResult]
          // do something with fileResult
        }