如果我們創建一個HttpWebRequest並從響應中獲取ResponseStream,那麼數據是否會立即被完全下載,或者當我們調用流的ReadBytes時,那麼只有數據會從網絡下載,然後讀取內容?我想參考GetResponseStream()或ReadBytes()誰負責下載數據以及如何操作?
代碼樣品提到如下:
var webRequest = HttpWebRequest.Create('url of a big file approx 700MB') as HttpWebRequest;
var webResponse = webRequest.GetResponse();
using (BinaryReader ns = new BinaryReader(webResponse.GetResponseStream()))
{
Thread.Sleep(60000); //Sleep for 60seconds, hope 700MB file get downloaded in 60 seconds
//At this point whether the response is totally downloaded or will not get downloaded at all
var buffer = ns.ReadBytes(bufferToRead);
//Or, in the above statement ReadBytes function is responsible for downloading the content from the internet.
}
爲什麼你需要等待1分鐘?即使它工作,那麼將整個700MB文件下載到內存也是如此糟糕。 只需從流中讀取一些緩衝區,然後在本地寫入,然後再次讀取並重新寫入,就容易多了。直到文件將被完全下載。 –
嗯,我只是做了一個thread.sleep,以便更容易理解web響應。getresponsestream有足夠的時間來讀取文件的所有必需內容。我想知道它是否會一次下載整個內容,或者ReadBytes是否是負責下載數據的主要功能。 –