Scala では、含まれているテキストfile.gz
を処理できるように解凍するにはどうすればよいですか? ファイルの内容を変数に格納するか、後でプログラムが読み取れるようにローカル ファイルとして保存することに満足しています。
具体的には、圧縮されたログ データを処理するために Scalding を使用していますが、Scalding はそれらを で読み取る方法を定義していませんFileSource.scala
。
これが私のバージョンです:
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)