我试图逐行读取文本文件并将其添加到数组,当前代码和输出如下.我将如何正确读取它,即获取实际文本以读入数组,而不是当前输出.(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
Run Code Online (Sandbox Code Playgroud)
输出:
System.Collections.ArrayList
Run Code Online (Sandbox Code Playgroud)
您的代码有效,但您无法一次打印整个数组.你必须以某种方式迭代数组并单独打印每个项目或将它们组合成一个单独的字符串.
分别打印每个项目:
For Each Item As String In quoteArray
Console.WriteLine(Item)
Next
Run Code Online (Sandbox Code Playgroud)
使用以下方法将它们组合成单个字符串String.Join():
Console.WriteLine(String.Join(Environment.NewLine, quoteArray.ToArray(GetType(String))))
Run Code Online (Sandbox Code Playgroud)
但是我不明白你为什么要用VB.NET编写,但仍然使用VB6时代过时的函数和类:
ArrayList
FileOpen()
LineInput()
FileClose()
有很多更好的选择,这些天:
ArrayList 可以用a代替 List(Of T)
FileOpen()并FileClose()与Using块结合StreamReader
LineInput() 同 StreamReader.ReadLine()
或者您可以使用常规数组和单次调用替换以上所有内容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
Run Code Online (Sandbox Code Playgroud)File.ReadAllLines() 解:
Dim quoteArray As String() = File.ReadAllLines("C:\path\to\file\textfile.txt")
Run Code Online (Sandbox Code Playgroud)使用循环打印列表/数组:
For Each Item As String In quoteArray
Console.WriteLine(Item)
Next
Run Code Online (Sandbox Code Playgroud)
使用String.Join()以下方法打印列表/数组:
Console.WriteLine(String.Join(Environment.NewLine, quoteArray))
Run Code Online (Sandbox Code Playgroud)
(如果您使用的quoteList解决方案只是替换quoteArray为quoteList这两个示例)