2013-10-09 58 views
0

我錯過了一些非常明顯的東西或者有關vb的東西真的搞砸了。我試圖從一個文件中讀取和線如果我添加字符串添加到一個ArrayList ...非常簡單到ArrayList這樣從文件中讀取時,VB無法將字符串轉換爲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() 

Messagebox.show線一整天,所以我知道它讀取文件和文件不是空的,我檢查了這回來爲串線的類型。這對我來說沒有意義。

+0

你在哪裏看到空的ArrayList?爲什麼不使用List(Of String)? –

+0

另外:通過循環的最後一次,您將向列表中添加一個空/無字符串。 –

+0

該代碼適用於我。我會檢查文件權限。 – N0Alias

回答

2

在while循環檢查reader.EndOfStream可能會更好地工作:

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不爲New ArrayList宣佈,如果你正確地把所有的選項開啓。

另一件需要記住的事情是,如果你的代碼是在表單的Load Handler中,它不會拋出異常,它只會跳出處理程序並加載表單。這使得很難找到壞文件名,聲明不好的對象等。

我做的一件事是將可疑代碼放在按鈕的Click處理程序中,並查看它引發的異常。

當然,這可能如果您使用File.ReadAllLines方法直接將它添加到ArrayList都變得毫無意義:

selectOptions.AddRange(File.ReadAllLines(path)) 
+0

ReadLine方法將在文件末尾返回null(Nothing)。對於空白行,它將返回String.Empty,因此循環不會退出。 –

+0

用於提示'File.ReadAllLines'。 –

相關問題