如何在Scala中阅读gzip文件

时间:2013-02-18 15:49:33

标签: scala

在Java中,我将GZIPInputStream包装在FileInputStream上并完成。如何在Scala中完成等效工作?

Source.fromFile("a.csv.gz")....

fromFile返回一个BufferedSource,它真的想要将世界视为一组行。

没有比这更优雅的方式吗?

Source.fromInputStream(new GZIPInputStream(new BufferedInputStream(new FileInputStream("a.csv.gz"))))

2 个答案:

答案 0 :(得分:22)

如果你想使用Source而不是用Java方式做所有事情,那么是的,你将不得不再添加一层包装到你在Java中做的事情。 Source需要InputStream,但可以为您Reader,这会阻止您使用Source两次。

Scala非常擅长让你永远不需要做更多的工作而不是Java,但特别是对于I / O,你经常需要回到Java类。 (当然,您可以随时定义自己的快捷方式:

def gis(s: String) = new GZIPInputStream(new BufferedInputStream(new FileInputStream(s)))

只比您已输入的内容长,现在您可以重复使用它。)

答案 1 :(得分:6)

我会在流构造中消除BufferedInputStream用法 - > new GZIPInputStream(new FileInputStream("a.csv.gz"))