我有一个scala方法,根据我的要求获取此源
def func(data : Source[ByteString,Any]) { ... }
我现在要做的就是从这个源读取所有字节并将它们写入文件。我已经阅读了很多做更复杂事情的例子,例如对所有值进行折叠计算。我想要一些更简单的东西,只是按顺序获取字节,这样我就可以把它们写出来了。我该怎么做?
答案 0 :(得分:4)
我认为FileIO.toFile
应该有用。
它创建一个Sink
,它接收传入的字节并将它们写入文件。
请注意,由于您正在使用流,因此您应该避免考虑"获取所有数据"为了把它发送到某个地方。相反,你应该想到"我怎么处理我得到的这一大块数据"。例如,如果您的数据源的大小以千兆字节为单位,那么尝试在一个地方收集所有数据几乎肯定会导致OutOfMemoryError。
答案 1 :(得分:1)
我想举一个例子来提供@Dylan的答案:
EmpID | Code | Name | Fld1 | Fld2 | Fld3 | Fld4 | FH | FB | FHRA
-- |---- | ------| --- | ---- |---- |---- | --- |--- | ----
1 | 1008M | ABC | temp1 | temp2 | temp3 | null |1000 |1210| 0
2 | 1039E | XYZ | temp1 | null | null | null |0 |3000| 3000
3 | 1040E | TYS | null | null | null | temp6|0 |3000| 0