繁体   English   中英

从C#中的多个Web文件读取第一行的有效方法

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM