如何在 f# 中读取 gzip 文件?

nh2*_*nh2 4 f# gzip

我有一个标准的 gzip 文件,我想将其读入 F# 中的序列。我找到了一个示例,说明如何在 Expert F# 3.0 中读取常规文件,并参考MSDN 文档中的.NET GZipStream Class,但我是 F#/.NET 的新手,不知道如何将两者结合起来获得想要的结果。

具体来说,我如何修改下面的代码来读取一个 gzipped 文件,比如 test.txt.gz?

let linesOfFile =
    seq {use reader = new StreamReader(File.OpenRead("test.txt"))
         while not reader.EndOfStream do
             yield reader.ReadLine()}
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 5

(发表评论作为答案)

GZipStream继承Stream,因此只需将您的底层流与以下内容一起传递给其构造函数CompressionMode

new StreamReader(
  GZipStream(
    File.OpenRead("test.txt"), 
    CompressionMode.Decompress))
Run Code Online (Sandbox Code Playgroud)