如果您想将整个文件加载到内存中,我建议您按照这些方式进行操作。首先,创建一个类来存储文件中每个项目的数据,例如:
Public Class MyItem
Public Id As String
Public X As Decimal
Public Y As Decimal
Public Z As Decimal
Public Avg As Decimal
Public C As Decimal
End Class
为简单起见,我只是为每个数据创建了公共字段,但它们应该是公共属性。接下来,创建一个将文件加载到这些对象列表中的方法。例如,这样的事情会起作用:
Public Function LoadItems(ByVal filePath As String) As Dictionary(Of String, MyItem)
Dim items As New Dictionary(Of String, MyItem)()
Dim item As MyItem = New MyItem()
For Each line As String In File.ReadAllLines(filePath)
Dim parts() As String = line.Split(New String() {"= "}, StringSplitOptions.RemoveEmptyEntries)
If parts.Length = 2 Then
Select Case parts(0)
Case "ID"
item = New MyItem()
item.Id = parts(1)
items.Add(item.Id, item)
Case "X"
item.X = Decimal.Parse(parts(1))
Case "Y"
item.Y = Decimal.Parse(parts(1))
Case "Z"
item.Z = Decimal.Parse(parts(1))
Case "Avg"
item.Avg = Decimal.Parse(parts(1))
Case "C"
item.C = Decimal.Parse(parts(1))
End Select
End If
Next
Return items
End Function
上面的示例使用 ID 作为每个项目的键返回字典中的项目。这样做可以非常快速和轻松地通过 ID 访问列表中的对象。例如:
Dim items As Dictionary(String, MyItem) = LoadItems("C:\Test.txt")
Dim item As MyItem = items("57010101-3")
Console.WriteLine("{0}, {1}, {2}", item.X, item.Y, item.Z)
但是,如果您不想将整个文件加载到内存中,您会想要做一些非常相似的事情,但不是让 load 方法返回项目列表,而是希望它只返回单个项目. 在 load 方法中,您希望使用文件流一次读取一行,然后立即关闭文件并在找到对象后返回对象,而不是一次加载所有行。