3
在以下scalaz-stream
(取自documentation)的使用示例中,如果輸入和/或輸出是gzip文件,需要更改哪些內容?換句話說,我該如何使用compress
?斯卡拉斯流充氣的使用示例
import scalaz.stream._
import scalaz.concurrent.Task
val converter: Task[Unit] =
io.linesR("testdata/fahrenheit.txt")
.filter(s => !s.trim.isEmpty && !s.startsWith("//"))
.map(line => fahrenheitToCelsius(line.toDouble).toString)
.intersperse("\n")
.pipe(text.utf8Encode)
.to(io.fileChunkW("testdata/celsius.txt"))
.run
// at the end of the universe...
val u: Unit = converter.run
感謝您的答覆。如果我在gzip文件中使用上述內容,則會得到'java.util.zip.DataFormatException:不正確的頭檢查',如果我使用'inflate(true)'而不是'java.util.zip.DataFormatException:invalid block type' – mitchus
gzip文件包含額外的頭文件,其中'infalte'(或'inflate'使用的'java.zip.Inflater')不理解,請參閱http://en.wikipedia.org/wiki/Gzip。 'inflate'只能處理DEFLATE壓縮的有效負載 –
如果你想從gzip文件讀取,你最好使用'io.linesR(in:=> InputStream)'和Java的'GZIPInputStream' –