如何在vb中赋值之前使用数组

时间:2014-08-01 11:00:48

标签: arrays vb.net

我试图在VB中使用循环填充数组。它基本上读取.txt文件并将所有行存储在一个数组中。我得到这个错误。 “在分配值之前使用数组”。

Dim fileEntries As String() = Directory.GetFiles(folderDIR, "*.txt")
Dim fileName As String
Dim fileReader As StreamReader
Dim strReadFile As String
Dim arrLines() As String
Dim i As Integer = 0
For Each fileName In fileEntries
    fileReader = File.OpenText(fileName)
    Do Until fileReader.Peek = -1
        strReadFile = fileReader.ReadLine()
        arrLines(i) = strReadFile
        i += 1
    Loop
Next

有没有办法在不预先定义数组长度的情况下做到这一点?我希望数组的长度是txt文件中的行数。希望我解释得很好。提前谢谢。

3 个答案:

答案 0 :(得分:0)

有很长一段时间,在vb6中,我使用 ReDim 在循环中动态地在数组中添加一个新条目。 不方便:减慢过程。 最好在创建数组之前计算文件所需的出现次数。 希望有所帮助。

答案 1 :(得分:0)

你可以将arrlines声明为list:

Dim arrLines As New List(Of String)()

然后你可以转换为arrLines到array:

arrLines.ToArray()

试试这个:

Dim fileEntries As String() = Directory.GetFiles(folderDIR, "*.txt")
Dim fileName As String
Dim fileReader As StreamReader
Dim strReadFile As String
Dim arrLines As New List(Of String)()
Dim i As Integer = 0
For Each fileName In fileEntries
    fileReader = File.OpenText(fileName)
    Do Until fileReader.Peek = -1
        strReadFile = fileReader.ReadLine()
        arrLines.Add(strReadFile)
    Loop
Next
arrLines.ToArray()

答案 2 :(得分:0)

您可以这样做:

Dim fileEntries As String() = Directory.GetFiles(folderDIR, "*.txt")
Dim fileName As String
Dim fileReader As StreamReader
Dim strReadFile As String
Dim arrLines() As String = {} 'Added this
'Dim i As Integer = 0 'Removed this
For Each fileName In fileEntries
    fileReader = File.OpenText(fileName)
    Do Until fileReader.Peek = -1
        strReadFile = fileReader.ReadLine()
        If arrLines.Length = 0 Then ReDim arrLines(0 To 0) Else ReDim Preserve arrLines(0 To arrLines.Length)
        arrLines(arrLines.Length - 1) = strReadFile
        i += 1
    Loop
Next

或者......