распаковать и прочитать файл 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)