0
我試圖從使用alpakka和scala流的ftp服務器讀取文件。 我從Ftp.fromPath(...)
得到的類型是Source[ByteString, Future[IOResult]]
。我想逐行閱讀文件(這是一個CSV文件),但我不知道如何。來自ftp的Akka流,逐行
我將不勝感激任何幫助。
我試圖從使用alpakka和scala流的ftp服務器讀取文件。 我從Ftp.fromPath(...)
得到的類型是Source[ByteString, Future[IOResult]]
。我想逐行閱讀文件(這是一個CSV文件),但我不知道如何。來自ftp的Akka流,逐行
我將不勝感激任何幫助。
有一種標準方法可以將Source[ByteString, _]
按行分割,稱爲。它可用於這樣的:
val source: Source[ByteString, Future[IOResult]] = Ftp.fromPath(...)
val splitter = Framing.delimiter(
ByteString("\n"),
maximumFrameLength = 1024,
allowTruncation = true
)
val result: Source[ByteString, Future[IOResult]] = source.via(splitter)
的maximumFrameLength
參數確定的線的最大長度;您可以將其設置爲Int.MaxValue
以獲得基本無限的行長度(但如果您的CSV行很長,可能會很危險),並且allowTruncation
設置爲true
,以允許在CSV末尾沒有新行的情況下文件。
result
源代碼在物化時會產生與每行對應的ByteString
s,但不包含換行符。如果您希望文件包含Windows行分隔符(「\ r \ n」),那麼您需要手動修剪這些字符串。
你能展示比這更多的代碼嗎? –