我正在讀取一個數據流中的數據並寫入另一個數據流。 我想要複製的文件是1.4 GB的大小。 爲什麼我的程序在讀寫時一直在使用內存。 如何防止內存不足異常?從流寫入到另一個流時讀存儲器超過
//Write data from URL
HttpWebRequest webRequestWrite = (HttpWebRequest)WebRequest.Create(WriteUrl);
webRequestWrite.AllowReadStreamBuffering = false;
webRequestWrite.AllowWriteStreamBuffering = false;
webRequestWrite.Method = "PUT";
using (Stream responseStreamWrite = webRequest.GetRequestStream())
{
int chunkSize = 4194304;
byte[] buffer = new byte[chunkSize];
int bytesRead = 0;
int totalBytes = 0;
//Read data from URL
HttpWebRequest webRead = (HttpWebRequest)WebRequest.Create(ReadUrl);
webRead.AllowReadStreamBuffering = false;
webRead.AllowWriteStreamBuffering = false;
using (WebResponse webResponseread = webRead.GetResponse())
using (Stream responseStreamRead = webResponseread.GetResponseStream())
{
while ((bytesRead = responseStreamRead.Read(buffer, 0, chunkSize)) > 0)
{
totalBytes += bytesRead;
responseStreamWrite.Write(buffer.Take(bytesRead).ToArray(), 0, bytesRead);
responseStreamWrite.Flush();
responseStreamRead.Flush();
}
}
responseStreamWrite.Flush();
}
[在C#中用流讀取大型文本文件]可能的副本(http://stackoverflow.com/questions/2161895/reading-large-text-files-with-streams-in-c-sharp) – prashantsunkari 2014-09-28 00:40:00
Are you獲得OOM異常還是對內存使用不滿?請注意,您應該使用'Stream.CopyTo'或甚至'Stream.CopyToAsync',而不是自行創建。 – 2014-09-28 00:49:28
您可以在'webRequestWrite'請求上將'SendChunked'設置爲true嗎?您可能還需要設置ContentLength。 – 2014-09-28 00:52:52