Scala 如何创建一个从源读取所有字节的接收器?
我有一个scala方法,它根据我的需求获取这个源代码Scala 如何创建一个从源读取所有字节的接收器?,scala,akka,akka-stream,Scala,Akka,Akka Stream,我有一个scala方法,它根据我的需求获取这个源代码 def func(data : Source[ByteString,Any]) { ... } 现在,我只想从这个源中读取所有字节并将它们写入一个文件。我读过很多例子,它们可以做更复杂的事情,比如对所有值进行折叠计算。我想要一种更简单的方法,只需要将字节按顺序排列,这样我就可以把它们写出来。我该怎么做呢?我想应该行得通 它创建一个接收接收传入字节并将其写入文件的接收器 注意,因为您使用的是流,所以应该避免为了将数据发送到某个地方而考虑获取所
def func(data : Source[ByteString,Any]) { ... }
现在,我只想从这个源中读取所有字节并将它们写入一个文件。我读过很多例子,它们可以做更复杂的事情,比如对所有值进行折叠计算。我想要一种更简单的方法,只需要将字节按顺序排列,这样我就可以把它们写出来。我该怎么做呢?我想应该行得通
它创建一个接收接收传入字节并将其写入文件的接收器
注意,因为您使用的是流,所以应该避免为了将数据发送到某个地方而考虑获取所有数据。相反,您应该考虑如何处理我获得的这一大块数据。例如,如果数据源的大小以GB为单位,尝试在一个位置收集所有数据几乎肯定会导致OutOfMemory错误。我认为应该可以
它创建一个接收接收传入字节并将其写入文件的接收器
注意,因为您使用的是流,所以应该避免为了将数据发送到某个地方而考虑获取所有数据。相反,您应该考虑如何处理我获得的这一大块数据。例如,如果数据源的大小以GB为单位,尝试在一个位置收集所有数据几乎肯定会导致OutOfMemoryError。我想通过给出一个示例来说明@Dylan的答案:
def func(src : Source[ByteString,Any], filePath:String) {
val sink: Sink[ByteString, Future[IOResult]] = FileIO.toPath(Paths.get(props.path))
src.runWith(sink)
}
我想举一个例子来说明@Dylan的答案:
def func(src : Source[ByteString,Any], filePath:String) {
val sink: Sink[ByteString, Future[IOResult]] = FileIO.toPath(Paths.get(props.path))
src.runWith(sink)
}