10

Scala では、含まれているテキストfile.gzを処理できるように解凍するにはどうすればよいですか? ファイルの内容を変数に格納するか、後でプログラムが読み取れるようにローカル ファイルとして保存することに満足しています。

具体的には、圧縮されたログ データを処理するために Scalding を使用していますが、Scalding はそれらを で読み取る方法を定義していませんFileSource.scala

4

1 に答える 1

22

これが私のバージョンです:

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)
于 2013-07-02T22:12:52.427 に答える