大文件和 OutOfMemoryException
Large file and OutOfMemoryException
我是 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[]
对于大文件不是一个好主意。
可以帮忙吗?
目前,您的代码正在下载整个文件并将其粘贴到堆上,然后写入本地文件。
为避免 OutOfMemoryException
,您需要边写边写磁盘,而不是等到最后。您可以通过从 web 服务获取文件作为流、打开一个新的文件流来写入和复制内容来实现这一点。
我是 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[]
对于大文件不是一个好主意。
可以帮忙吗?
目前,您的代码正在下载整个文件并将其粘贴到堆上,然后写入本地文件。
为避免 OutOfMemoryException
,您需要边写边写磁盘,而不是等到最后。您可以通过从 web 服务获取文件作为流、打开一个新的文件流来写入和复制内容来实现这一点。