我正在编写在 Windows Server 2016 上运行的 .NET
应用程序,该应用程序对大文件的许多块进行 http 获取。这样可以大大加快下载过程,因为您可以并行下载它们。不幸的是,一旦它们被下载,将它们全部拼接在一起需要相当长的时间。
需要组合的文件数量在 2 到 4k 之间。这个服务器具有充足的内存,接近800GB
。我认为使用MemoryStream
来存储已下载的分片,直到它们可以按顺序写入磁盘,是有意义的但在我使用约2.5GB
的内存后,就会出现System.OutOfMemoryException
错误。该服务器有数百 GB 的可用空间,但我无法找出如何使用它们。
ConcatenatedStream
可以满足你的需求,只要你不需要随机寻址。它来自于 How do I concatenate two System.Io.Stream instances into one?。 - dbc