下载N兆字节的XML文件

本文关键字:XML 文件 字节 下载 | 更新日期: 2023-09-27 18:29:28

我想下载第一个N兆字节的巨大XML文件,这样我就可以用HTMLAgilityPack关闭损坏的标签。不幸的是,我不能使用XMLReader。

我试着在HTTP标头上设置范围,但似乎不起作用,所以现在我正在尝试这个:

public string download(string url, int mb)
{
    Int32 bytesToGet = 1048576 * mb;
    HttpWebRequest request;
    request = WebRequest.Create(url) as HttpWebRequest;
    var buffer = new char[bytesToGet];
    using (WebResponse response = request.GetResponse())
    {
        using (StreamReader sr = new StreamReader(response.GetResponseStream()))
        {
            sr.Read(buffer, 0, bytesToGet);
        }
    }
    return new string(buffer);
}

但这仍然不起作用。我用mb=5进行了尝试,结果只得到了XML文件的几行。

下载N兆字节的XML文件

您只调用了Read()一次,这并不能保证填充缓冲区。保持下载的字节数并继续读取,直到缓冲区已满或流结束:

int offset = 0;
int bytesRead = 0;
do
{
    bytesRead = sr.Read(buffer, offset, bytesToGet - offset);
    offset += bytesRead;
} while (bytesRead > 0);