我有一个逐行数据的文本文件。我试图将数据行放入数组或列表中。
Dim req As WebRequest = WebRequest.Create("http://www.blahblah.com/data/ListFull.csv")
Dim res As WebResponse = req.GetResponse()
Dim stream As Stream = res.GetResponseStream()
Dim sr As StreamReader = New StreamReader(stream, Encoding.ASCII)
Dim streamString As String = sr.ReadToEnd
'#1
Dim lines1 As String()
If streamString.Length > 0 Then
lines1 = streamString.Split(vbLf)
End If
'#2
Dim lines2 As New List(Of String)
Using r As StreamReader = New StreamReader(stream, Encoding.ASCII)
Dim line As String
line = r.ReadLine
Do Until String.IsNullOrEmpty(line)
lines2.Add(line)
'counter += 1
'line = r.ReadLine
Loop
End Using
我有一个选项工作正常,所有文件数据都进入我的lines1数组。
但是选项2不起作用。当我单步执行代码时:line = r.ReadLine
为空/无。为什么不读入流以及我做错了什么?
答案 0 :(得分:1)
这一行之后:
Dim streamString As String = sr.ReadToEnd
您的流对象为空,其所有内容都已复制到字符串中,现在“stream”不包含任何内容。一些流类支持:
Stream.Seek(0, SeekOrigin.Begin)
要回到开头,但GetResponseStream()返回的Stream不支持它。
你可以复制Stream(我不推荐),也可以只处理你已经检索过的streamString。