J'ai de gros fichiers csv (1,5 Go chacun) où j'ai besoin de remplacer des valeurs spécifiques. La méthode que j'utilise actuellement est terriblement lente et je suis assez certain qu'il devrait y avoir un moyen d'accélérer cela, mais je n'ai pas assez d'expérience pour savoir ce que je devrais faire. C'est mon premier article et j'ai essayé de chercher quelque chose de pertinent mais je n'ai rien trouvé. Toute aide serait appréciée. Mon autre idée serait de décomposer le fichier en morceaux pour que je puisse tout lire en mémoire, y faire tous les remplacements, puis les sortir dans un fichier consolidé. J'ai essayé cela mais la façon dont je l'ai fait a finalement semblé plus lente que ma méthode actuelle.VB.Net Remplacement de valeurs spécifiques dans un fichier de texte volumineux
Merci!
Sub Main()
Dim fName As String = "2009.csv"
Dim wrtFile As String = "2009.1.csv"
Dim lRead
Dim lwrite As String
Dim strRead As New System.IO.StreamReader(fName)
Dim strWrite As New System.IO.StreamWriter(wrtFile)
Dim bulkWrite As String
bulkWrite = ""
Do While strRead.Peek <> -1
lRead = Split(strRead.ReadLine(), ",")
If lRead(9) = "5MM+" Then lRead(9) = "5000000"
If lRead(9) = "1MM+" Then lRead(9) = "1000000"
lwrite = ""
For i = LBound(lRead) To UBound(lRead)
lwrite = lwrite & lRead(i) & ","
Next
strWrite.WriteLine(lwrite)
Loop
strRead.Close()
strWrite.Close()
End Sub
Dans .Net 4, vous pouvez essayer [mémoire mappée fichiers] (http://stackoverflow.com/questions/2333075/net-4-0-memory-mapped-files-performance). Cela peut considérablement améliorer les performances des opérations de fichiers – MarkJ