[英]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.