如何将压缩的数据流复制到F#中的文件?

时间:2018-08-03 16:07:51

标签: .net f# .net-core

我正在尝试使用F#将大型文件从远程系统流式传输到本地文件。流包含压缩的数据。这是我一直努力工作的代码:

            let client = new HttpClient()
            let! gzippedDataStream = client.GetStreamAsync(uri) |> Async.AwaitTask
            using (new FileStream(fileName, FileMode.Create, FileAccess.Write)) (fun fs ->
                using (new MemoryStream()) (fun outputMemStream ->
                    using (new GZipStream(gzippedDataStream, CompressionMode.Decompress)) (fun gzipStream ->
                        gzipStream.CopyTo outputMemStream
                    )
                    outputMemStream.CopyTo fs
                )
            )

运行时,将创建一个文件,但不写入任何内容。我认为这可能是因为未在正确的时间刷新某些流,但是我尝试了一些不同的排序,但仍然无法使其正常工作。有人看到我在哪里错了吗?

1 个答案:

答案 0 :(得分:2)

如评论中所述,您可以直接写入FileStream,也可以在MemoryStream上调用WriteTo方法而不是CopyTo