У меня есть текстовый файл, который имеет данные по строкам. Я пытаюсь помещать строки данных в массив или список.Включение текстового файла в список или массив с помощью streamreader
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
имеет значение null/nothing. Почему не читается поток и что я делаю неправильно?
удалить отметку с комментариями от '' line = r.ReadLine': он отлично работает для меня. Строка 'sr.ReadToEnd' будет использоваться только для первого, поскольку для второго, так как вы хотите читать строки за строкой. – Plutonix
Привет, Дэвид, вы используете оба решения в одной функции/параллельно? Вы должны работать с «использованием» также в своем первом решении. Возможно, поток уже находится в конце файла. Попробуйте закомментировать решение1 и присвоить streamString. – etalon11
Да, они не будут работать вместе - метод №1 уже будет потреблять поток – Plutonix