我正在尝试逐行读取文本文件并将其添加到数组中,当前代码和输出如下。我将如何正确读取它,即获取实际文本以读入数组,而不是当前输出。 (VB.NET的控制台应用版本)
代码:
Sub Main()
Dim file As String = "C:\path\to\file\textfile.txt"
Dim quoteArray As New ArrayList
FileOpen(1, file, OpenMode.Input)
Do While Not EOF(1)
quoteArray.Add(LineInput(1))
Loop
FileClose(1)
Console.WriteLine(quoteArray)
Console.ReadLine()
End Sub
输出:
System.Collections.ArrayList
答案 0 :(得分:6)
您的代码有效,但您无法一次打印整个数组。您必须以某种方式迭代数组并单独打印每个项目或将它们组合成一个字符串。
分别打印每件商品:
For Each Item As String In quoteArray
Console.WriteLine(Item)
Next
使用String.Join()
将它们组合成一个字符串:
Console.WriteLine(String.Join(Environment.NewLine, quoteArray.ToArray(GetType(String))))
然而,我不明白你为什么要用VB.NET编写,但仍在使用VB6时代过时的函数和类:
ArrayList
FileOpen()
LineInput()
FileClose()
现在有 多 更好的选择:
ArrayList
可以替换为List(Of T)
FileOpen()
和FileClose()
Using
block加StreamReader
LineInput()
与StreamReader.ReadLine()
或者您可以使用regular array和File.ReadAllLines()
的一次调用替换以上所有内容。
StreamReader
解决方案:
Dim quoteList As New List(Of String)
Using Reader As New StreamReader("C:\path\to\file\textfile.txt")
While Reader.EndOfStream = False
quoteList.Add(Reader.ReadLine())
End While
End Using
File.ReadAllLines()
解决方案:
Dim quoteArray As String() = File.ReadAllLines("C:\path\to\file\textfile.txt")
使用循环打印列表/数组:
For Each Item As String In quoteArray
Console.WriteLine(Item)
Next
使用String.Join()
打印列表/数组:
Console.WriteLine(String.Join(Environment.NewLine, quoteArray))
(如果您使用的是quoteList
解决方案,请在这两个示例中将quoteArray
替换为quoteList
)
答案 1 :(得分:2)
使用ReadLines:
ReadLines和ReadAllLines方法的不同之处如下:使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;当您使用ReadAllLines时,必须等待返回整个字符串数组才能访问该数组。因此,当您使用非常大的文件时,ReadLines可以更有效。