【发布时间】:2021-06-25 01:43:33
【问题描述】:
我有这个代码:
Dim TextRead As StreamReader = File.OpenText(FilePath)
Do While TextRead.Peek <> -1
Select Case True
Case TextRead.ReadLine.EndsWith("25m Freestyle") : lstF25.Items.Add(TextRead.ReadLine())
Case TextRead.ReadLine.EndsWith("50m Freestyle") : lstF50.Items.Add(TextRead.ReadLine())
Case TextRead.ReadLine.EndsWith("25m Backstroke") : lstB25.Items.Add(TextRead.ReadLine())
Case TextRead.ReadLine.EndsWith("50m Backstroke") : lstB50.Items.Add(TextRead.ReadLine())
End Select
Loop
TextRead.Close()
它试图做的是读取每行的结尾,并根据行尾所说的将其放入 4 个不同的 ListBox,但我在 case 语句中收到 NullReferenceExeption。
我知道我不会将 NULL 添加到列表框中,因为它不会导致 .EndsWith() 等于 true。
这是纺织品外观的示例:
John, Smith, 70, 25m Freestyle
Alice, Smith, 73, 50m Freestyle
Bob, Smith, 71, 25m Backstroke
Charlie, Smith, 74, 50m Backstroke
David, Smith, 76, 25m Backstroke
【问题讨论】:
-
您应该先阅读当前行,然后再选择该文本的目的地。您最好事先阅读所有行,使用
List(Of String)作为容器,然后使用LINQ 的.Where(...).ToArray()将文本行分配给控件(设置DataSource 或使用Items.AddRange()方法)。 -- 您应该指定这些 ListBox 控件属于哪个 UI 平台。 -
您的部分问题是您为每个案例调用 Read Line 两次。正如@Jimi 所说,在对其进行任何处理之前将该行读入某种性质的变量
标签: vb.net text-files nullreferenceexception