codice:
Public Sub ReadCSV(CSV As String)
Dim ary(0) As String
Dim sr As New System.IO.StreamReader(CSV)
Dim placeholder As Integer = 0
Do While sr.Peek <> -1
ReDim Preserve ary(placeholder)
ary(placeholder) = sr.ReadLine
placeholder += 1
Loop
Console.WriteLine("Waiting for the file 'verified_online.csv'...")
Console.WriteLine("Reading data from 'verified_online.csv")
Console.WriteLine(ary)
End Sub
Qualcosa di simile vidi tanti anni fa in rete e davvero mi stupii di un codice tanto assurdo
E' molto lento perchè ad ogni iterazione viene ricreato un nuovo vettore su cui si copiano i dati del precedente. Si verifica pure se, al posto del vettore hai una stringa, su cui fai, ad ogni iterazione stringa &= sr.ReadLine
Io, in questo caso userei un List(Of string) semplice e veloce, oppure qualcosa del genere
codice:
Sub Main()
Dim sw As New Stopwatch()
sw.Start()
Dim v As String() = ReadCSV("c:\tmp\prova.csv")
sw.Stop()
Console.WriteLine(sw.ElapsedMilliseconds)
Console.Write("Premere un tasto per continuare . . . ") : Console.ReadKey()
End Sub
Public Function ReadCSV(csv As String) As String()
Dim result(-1) As String 'creo un vettore di 0 elementi stringa
Array.Resize(Of String)(result, 4) 'dimensione iniziale buffer
Dim c As Integer = -1 'contatore
Using sr As New StreamReader(CSV)
Do While Not sr.EndOfStream
c += 1
Dim u As Integer = result.Length
If c >= u Then
Array.Resize(Of String)(result, u + u) 'raddoppio la dimensione del vettore
End If
result(c) = sr.ReadLine 'leggo la riga
Loop
End Using
Array.Resize(Of String)(result, c + 1)
Return result
End Function