распаковать и прочитать файл gzip в scala

в Scala, как можно распаковать текст, содержащийся в file.gz чтобы его можно было обработать? Я был бы рад либо иметь содержимое файла, хранящегося в переменной, либо сохранить его как локальный файл, чтобы он мог быть прочитан программой после.

в частности, я использую ошпаривание для обработки сжатых данных журнала, но ошпаривание не определяет способ их чтения в FileSource.scala.

1 ответов


вот мой вариант:

import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.zip.GZIPInputStream
import java.io.FileInputStream

class BufferedReaderIterator(reader: BufferedReader) extends Iterator[String] {
  override def hasNext() = reader.ready
  override def next() = reader.readLine()
}

object GzFileIterator {
  def apply(file: java.io.File, encoding: String) = {
    new BufferedReaderIterator(
      new BufferedReader(
        new InputStreamReader(
          new GZIPInputStream(
            new FileInputStream(file)), encoding)))
  }
}

затем выполните:

val iterator = GzFileIterator(new java.io.File("test.txt.gz"), "UTF-8")
iterator.foreach(println)