在 FileIO.toPath 接收器完成时触发
Triggering on FileIO.toPath sink completion
我有一个 IO 源我正在多路复用一个文件并移交给系统的另一部分执行,如:
source.alsoTo(FileIO.toPath(path))
这用于缓存,即我正在将通过我的系统传递到临时缓存位置的文件写入。写入缓存后,我想将其自动移动到最终位置。
源的消费者得到一个 Future
并且知道它何时完成,但是我的侧通道写入文件到磁盘没有我能找到的这样的工具。有没有什么方法可以将完成处理程序附加到接收器,以便我可以完成对该文件的操作?
而不是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
}
我有一个 IO 源我正在多路复用一个文件并移交给系统的另一部分执行,如:
source.alsoTo(FileIO.toPath(path))
这用于缓存,即我正在将通过我的系统传递到临时缓存位置的文件写入。写入缓存后,我想将其自动移动到最终位置。
源的消费者得到一个 Future
并且知道它何时完成,但是我的侧通道写入文件到磁盘没有我能找到的这样的工具。有没有什么方法可以将完成处理程序附加到接收器,以便我可以完成对该文件的操作?
而不是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
}