我正在尝试逐行读取文本文件并将其添加到数组中,当前代码和输出如下。我如何正确读取它,即将实际文本读入数组,而不是当前输出。 (VB.NET 的控制台应用程序版本)
Code:
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
Output:
System.Collections.ArrayList
您的代码可以工作,但无法一次打印整个数组。您必须以某种方式迭代数组并单独打印每个项目或将它们组合成一个字符串。
单独打印每个项目:
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()
有much如今更好的选择:
ArrayList
可以替换为List(Of T) https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx
FileOpen()
and FileClose()
with a Using block https://learn.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/using-statement结合一个StreamReader https://msdn.microsoft.com/en-us/library/system.io.streamreader(v=vs.110).aspx
LineInput()
with StreamReader.ReadLine() https://msdn.microsoft.com/en-us/library/system.io.streamreader.readline(v=vs.110).aspx
或者您可以将以上所有内容替换为正则数组 https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/arrays/和一个单一的电话File.ReadAllLines() https://msdn.microsoft.com/en-us/library/system.io.file.readalllines(v=vs.110).aspx.
-
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
with quoteList
在这两个例子中)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)