30

Javaでは、GZIPInputStreamをFileInputStreamにラップして、完了します。Scalaで同等のことはどのように行われますか?

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

fromFileはBufferedSourceを返します。これは、実際には世界を行のコレクションとして表示したいと考えています。

これ以上のエレガントな方法はありませんか?

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

2 に答える 2

23

Javaの方法ですべてを実行するのではなく、使用したい場合はSource、そうです。Javaで実行していたことに、もう1層のラッピングを追加する必要があります。 Sourcesを取りますが、sInputStreamを与えることができるため、2回Reader使用することはできませんSource

Scalaは、Javaよりも多くの作業を行う必要がないようにするのに非常に優れていますが、特にI / Oでは、Javaクラスにフォールバックする必要があることがよくあります。(もちろん、いつでも独自のショートカットを定義できます。

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

すでに入力したものよりもわずかに長くなり、再利用できるようになりました。)

于 2013-02-18T16:12:33.793 に答える
7

ストリーム構築でのBufferedInputStreamの使用を排除します->new GZIPInputStream(new FileInputStream("a.csv.gz"))

于 2014-11-25T20:08:58.050 に答える