大文件和OutOfMemoryException

时间:2016-09-16 01:30:32

标签: c# out-of-memory large-files

我是C#的新手,我的老板要我调查一个OutOfMemory例外。如果文件很大(> 50MB),抛出异常的代码特别是第一行:

     byte[] fileBytes = ws.getFile(f.FileId, f.Version); // This line gets the file from a webservice.
     File.WriteAllBytes(Path.Combine(folder, f.FileId.ToString("0")), fileBytes);

我在某处读到使用byte[]对大文件不是一个好主意。 请帮忙吗?

1 个答案:

答案 0 :(得分:3)

目前,您的代码正在下载整个文件并将其粘贴在堆上,然后在本地写入文件。

要避免使用OutOfMemoryException,您需要随时写入磁盘而不是等到结束。您可以通过将Web服务中的文件作为流来获取,打开一个用于写入和复制内容的新文件流来实现此目的。