Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何创建一个从源读取所有字节的接收器?_Scala_Akka_Akka Stream - Fatal编程技术网

Scala 如何创建一个从源读取所有字节的接收器?

Scala 如何创建一个从源读取所有字节的接收器?,scala,akka,akka-stream,Scala,Akka,Akka Stream,我有一个scala方法,它根据我的需求获取这个源代码 def func(data : Source[ByteString,Any]) { ... } 现在,我只想从这个源中读取所有字节并将它们写入一个文件。我读过很多例子,它们可以做更复杂的事情,比如对所有值进行折叠计算。我想要一种更简单的方法,只需要将字节按顺序排列,这样我就可以把它们写出来。我该怎么做呢?我想应该行得通 它创建一个接收接收传入字节并将其写入文件的接收器 注意,因为您使用的是流,所以应该避免为了将数据发送到某个地方而考虑获取所

我有一个scala方法,它根据我的需求获取这个源代码

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)
}