我正在尝试在包含以下信息的列表框中打开txt文件:
11111\George Baker\825.50
22222\Jane Doe\563.75
我正在尝试使用split方法,因此数据在显示时会被拆分。
我已经知道在列表框中显示数据的方式与文本文件中的数据完全相同,但我无法正确分割并显示我想要的信息:
Number: 11111 Name: George Baker Balance: 825.50
Number: 22222 Name: Jane Doe Balance 563.75
这是我到目前为止的代码:
Public Function GetData() As Boolean
Dim streamer As StreamReader = Nothing
LastError = String.Empty
Dim fields() As String
Try
streamer = OpenText("C:\----accounts.txt")
While Not streamer.EndOfStream
Dim line As String = streamer.ReadLine()
fields = line.Split("\"c)
number = fields(0)
name = fields(1)
balance = fields(2)
End While
lstAccounts.Items.Add("Number: " & fields(0).Trim() &
"Name: " & fields(1).Trim() &
"Balance: $" & fields(2).Trim())
LastError = "File not found"
Return False
Catch ex As Exception
LastError = ex.Message
Return False
Finally
If streamer IsNot Nothing Then streamer.Close()
End Try
Return False
End Function
这就是我改变它的原因。
它位于帐户类中。我希望它在加载表单时加载到列表框中。
我已经导入了System.IO和System.IO.File。
另外,在其他示例中,我看到很多文件路径使用'.. \'缩短了一些目录。它与解决方案位于同一文件夹中,无论如何都要缩短它? (另外,我在上面粘贴的代码中没有包含完整的文件路径以节省空间,它很长...大声笑)
答案 0 :(得分:1)
您必须编写所需的字符串并附加fields
数组的相应位置(从零开始)。这里有一个示例代码:
While Not streamer.EndOfStream
Dim line As String = streamer.ReadLine()
If (line IsNot Nothing) Then
Dim fields() As String = line.Split("\"c)
If (fields.Length = 3) Then
lstAccounts.Items.Add("Number: " & fields(0).Trim() & "Name: " & fields(1).Trim() & "Balance: " & fields(2).Trim())
End If
End If
End While
关于路径,如果它与可执行文件位于同一文件夹中,则可能依赖于相对路径(例如,如果它位于同一文件夹中,文件名;如果它位于文件夹内,则此文件夹\文件名等) ;虽然这可能在某些情况下引发问题(依赖绝对路径总是更安全)。另一种选择是从.NET属性获取应用程序的目录(例如,Environment.CurrentDirectory
)。