爲了工作,我的項目的規範是使用.Net 2.0,所以我沒有得到稍後帶來的方便的CopyTo
函數。從一個流複製到另一個流?
我需要將來自HttpWebResponse
的響應流複製到另一個流(很可能是MemoryStream
,但它可能是Stream
的任何子類)。我正常的策略是沿着以下幾點:
BufferedStream bufferedresponse = new BufferedStream(HttpResponse.GetResponseStream());
int count = 0;
byte[] buffer = new byte[1024];
do {
count = bufferedresponse.Read(buffer, 0, buffer.Length);
target.Write(buffer, 0, count);
} while (count > 0);
bufferedresponse.Close();
是否有更有效的方法來做到這一點?緩衝區的大小真的很重要嗎?在.Net 2.0中從一個流複製到另一個流的最佳方式是什麼?
P.S.這是用於下載大型,200 + MB GIS tif圖像。當然,可靠性是最重要的。
可能的[兩個Stream實例之間複製的最佳方法]的副本(http://stackoverflow.com/questions/230128/best-way-to-copy-between-two-stream-instances-c) 。所選擇的答案就是你現在正在做的事情,所以我會說你正確地做了。 – 2011-06-02 15:09:27
在我解決問題之前,我想說我的.NET 2.0限制。我希望這足以保持開放,我不想讓我的問題關閉:( – 2011-06-02 15:20:36
我鏈接到的問題有一個使用您的方法以及更新的'CopyTo'方法的答案。值得一提的是,你會得到更好的性能(如果它符合你的用例)等待整個流進入,然後將流複製到更大的塊中但這並不總是理想的 – 2011-06-02 15:22:44