[英]Efficient way to read first lines from several web files in C#
有一個Web服務器,其中包含帶有不同新聞類別的多個長文件(> 500Kb)。 我只需要獲取每個類別的最新新聞,即文件的第一行(通常<1Kb,但可以更多),並使下載速度更快,並且由於連接速度較慢,我的想法是逐行閱讀,因此下載最小數據量。 目前,我執行以下代碼,但是從下載完整文件來看,這似乎並沒有太大的改善。
foreach(var newsType in newsTypes)
{
var request = WebRequest.Create("http://www.xxxx.com/" + newsType) as HttpWebRequest;
request.Timeout = 5000;
using (var response = request.GetResponse() as HttpWebResponse)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
while (!reader.EndOfStream)
{
var fileRowCSV = reader.ReadLine();
...
if (old-news) break;
...
}
}
}
是否存在需要修改的設置,因此並非所有文件都可以傳輸? 我可以某種方式重用一個連接以讀取其他文件嗎? 關於如何改進流程的任何想法?
謝謝
我認為.NET Framework中沒有內置的方法可以做到這一點。 但是,如果您只是想加快整個過程的速度,則可以(相對容易地,我認為)並行化外部foreach
循環。
另外, 這是一個MSDN示例,顯示了從Web下載文件的進度。 您應該能夠使用該示例中的代碼來完成所需的工作:每X個字節之后,檢查是否已收到old-news
,如果是,則取消下載。 合理的警告,不僅是幾行代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.