Vb.net VB可以';从文件读取时,将t字符串转换为arraylist

Vb.net VB可以';从文件读取时,将t字符串转换为arraylist,vb.net,arraylist,Vb.net,Arraylist,要么我错过了一些非常明显的东西,要么vb真的搞砸了。我正在尝试从文件读入并将行添加到arraylist。。。如果我以这种方式将字符串添加到arraylist中,则非常简单 selectOptions.Add("Standard") selectOptions.Add("Priority") selectOptions.Add("3-Day") selectOptions.Add("Overnight") 我没有问题 但当我这样做的时候,它看起来是空的,这对我来说毫无意义 Dim reader

要么我错过了一些非常明显的东西,要么vb真的搞砸了。我正在尝试从文件读入并将行添加到arraylist。。。如果我以这种方式将字符串添加到arraylist中,则非常简单

selectOptions.Add("Standard")
selectOptions.Add("Priority")
selectOptions.Add("3-Day")
selectOptions.Add("Overnight")
我没有问题

但当我这样做的时候,它看起来是空的,这对我来说毫无意义

Dim reader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(path)
    Dim line As String
    Do
        line = reader.ReadLine
        selectOptions.Add(line)
    Loop Until line Is Nothing
    reader.Close()

整天显示行,这样我知道它正在读取文件,并且文件不是空的,并且我已经检查了作为字符串返回的行的类型。这对我来说毫无意义

在While循环中检查
reader.EndOfStream
可能会更好:

Dim reader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(path)
    Dim line As String
    Do
        line = reader.ReadLine
        selectOptions.Add(line)
    Loop Until line Is Nothing
    reader.Close()
    Dim reader As New StreamReader(path)
    Dim line As String
    While Not reader.EndOfStream
        line = reader.ReadLine
        selectOptions.Add(line)
    End While
    reader.Close()
如果正确地打开了所有选项,则如果selectOptions未声明为新ArrayList,也会出现异常

要记住的另一件事是,如果您的代码在表单的加载处理程序中,它不会引发异常,它只会中断处理程序例程并加载表单。这使得查找错误的文件名、错误声明的对象等内容变得非常困难

我要做的一件事是将可疑代码放入按钮的单击处理程序中,并查看它在那里抛出了哪些异常

当然,如果您使用File.ReadAllLines方法并将其直接添加到ArrayList中,这一切都可能是没有意义的:

selectOptions.AddRange(File.ReadAllLines(path))

你在哪里看到空的ArrayList?为什么不使用List(Of String)?另外:最后一次通过循环时,您将向列表中添加一个null/Nothing字符串。这段代码对我很有用。我将检查文件权限。ReadLine方法将在文件末尾返回null(Nothing)。对于空行,它将返回String.Empty,这样循环就不会退出。