我试图在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文件中的行数。希望我解释得很好。提前谢谢。
答案 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
或者......