我有一个IO源,我正在多路复用一个文件,并将其切换到系统的另一部分执行如下:
source.alsoTo(FileIO.toPath(path))这用于缓存,也就是说,我正在编写一个文件,通过我的系统传递到一个临时缓存位置。一旦写好了缓存,我想把它原子地移到它的最终位置。
源的使用者获得一个Future并知道何时完成,但是我的边通道写入文件到磁盘没有这样的工具可以找到。是否有方法将完成处理程序附加到接收器,以便我能够完成对该文件的操作?
发布于 2018-11-23 13:38:38
不要使用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
}https://stackoverflow.com/questions/53437098
复制相似问题