我是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[]
对大文件不是一个好主意。
请帮忙吗?
答案 0 :(得分:3)
目前,您的代码正在下载整个文件并将其粘贴在堆上,然后在本地写入文件。
要避免使用OutOfMemoryException
,您需要随时写入磁盘而不是等到结束。您可以通过将Web服务中的文件作为流来获取,打开一个用于写入和复制内容的新文件流来实现此目的。