如何在Scala中正确解压缩gz存档

我是Scala的新手,我有一个小任务,需要我*.gz fileresources目录中解压缩因此,我需要一种正确的方法来解析文件内容。当然我已阅读在过去的一些文章,如:ONE TWO THREE

我可以解析尚未归档但无法立即处理gz存档的文件内容。看起来我缺少一些小东西,因为我还是Java和Scala的新手。

Scala版本-2.21.0

我下面有一部分代码:

object ResourceLoader {
    def loadResource(fileName: String): Try[InputStream] = Try(getClass.getResourceAsStream(fileName))


    def loadResource(fileName: String): Try[List[String]] =
        for {
            resourceStream <- loadResource(fileName)
            resourceContent = Source.fromInputStream(resourceStream).getLines.toList
        } yield resourceContent
}

然后,我可以遍历未存档的文件,例如:

        val content = ResourceLoader.loadResourceContent("/test_text.csv") recover {
            case e: FileNotFoundException => println(s"Requested file not found: $e")
            case e: SecurityException => println(s"Permission denied: $e")
            case e: Exception => println(s"An unknown exception occurred: $e")
        }
        content.foreach(println)

但是无法理解如何先解压缩gz归档文件然后对其进行迭代。

我希望在loadResource函数中使用GZIPInputStream而不是getResourceAsStream,但是无法理解如何以正确的方式进行操作。

预先感谢您的任何帮助!

瓦尔·迪亚

正如@Luis所说,这是您可以做的:


val inputStream = Thread.currentThread().getContextClassLoader.getResourceAsStream("test_text.csv.gz")
val gzipFileSource: BufferedSource = Source.fromInputStream(new GZIPInputStream(inputStream))

println(gzipFileSource.getLines.toList.head)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章