我正在尝试使用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
)
)
运行时,将创建一个文件,但不写入任何内容。我认为这可能是因为未在正确的时间刷新某些流,但是我尝试了一些不同的排序,但仍然无法使其正常工作。有人看到我在哪里错了吗?
答案 0 :(得分:2)
如评论中所述,您可以直接写入FileStream,也可以在MemoryStream上调用WriteTo
方法而不是CopyTo
。