我在这段C#代码中遇到OutOfMemoryException问题。
private void SaveZip(IDataReader reader, string header, string fileName, Ionic.Zip.ZipFile zip)
{
using (var stream = new MemoryStream())
{
using (var writer = new StreamWriter(stream, Encoding.ASCII))
{
writer.WriteLine(header);
while (reader.Read())
{
writer.WriteLine(reader.GetString(0)); //exception occurs here
}
writer.Close();
}
zip.AddEntry(fileName, stream.ToArray());
}
}
代码尝试将DataReader对象写入文件,该文件在过程结束时被压缩。问题是Reader包含大量数据,大约150MB,当我尝试在内存上写入流时,它会产生异常。 我怎么能解决这个问题?
感谢您的帮助!
答案 0 :(得分:0)
如果没有足够的内存来处理数据到内存缓冲区,那么你必须将它存储在内存的一边,就像磁盘一样。例如将MemoryStream
替换为FileStream