我们有一个自动生成并放入Web服务器的文本文件。任务是逐行读取文件并将记录插入数据库中。以下代码在C#中:
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
StreamReader r = new StreamReader(response.GetResponseStream());
while (r.Peek() > -1)
{
string s = r.ReadLine().Trim();
//insert string into a db.
}
当我这样做时,我不断得到整个文件,范围从9000 - 10000行。另一方面,当我使用以下内容时,有时会得到一个截断的文件(少行)
WebClient client = new WebClient();
StreamReader r = new StreamReader(client.OpenRead(url));
while (r.Peek() > -1)
{
string s = r.ReadLine().Trim();
//insert string into a db.
}
任何人都可以解释这个区别吗?为什么结果会有所不同?我的印象是WebClient只是HttpWebRequest的包装。
答案 0 :(得分:0)
使用Peek
方法,您可以保证整条线都准备好为红色。
我打赌你得到了部分线(实际上在当前的流位置打破了)。
事实上,我认为这与两个类别中的任何一个都没有关系,而是与你如何阅读结果有关。
您是否尝试过WebClient.DownloadString()方法?