Je voudrais connaître un moyen (bien sûr, je veux savoir le meilleur moyen) pour éditer un fichier CSV, de préférence sans avoir à lire l'original et écrire les résultats à un nouveau.VB.Net éditer un fichier CSV (ou un fichier délimité)
Exemple 1: Je veux diviser le contenu d'une colonne en deux colonnes 123abc en 123, abc
Exemple 2: Je veux retirer des lettres du début d'une colonne AB123 dans 123
Précision : Je n'ai pas besoin d'aide pour résoudre mes exemples; J'ai juste besoin d'être pointé dans la bonne direction de lecture et d'édition du même fichier.
Voici un exemple de code à l'aide d'un fichier temporaire qui me semble trop lent
Dim currentLine as string()
tempFile.AutoFlush = True
Do Until origFile.EndOfData
currentLine = origFile.ReadFields
currentLine(1) = currentLine(1).Replace("ABC","") 'would convert ABC123 to 123
For index as Integer = 0 to currentLine.Count - 2
tempFile.Write(currentLine(index) & ",")
Next
tempFile.Write(currentLine(currentLine.Count - 1))
tempFile.WriteLine()
Loop
tempFile.Flush()
tempFile.Dispose()
origFile.Dispose()
IO.File.Copy(tempFile,OrigFile,True)
IO.File.Delete(tempFile)
Alternativement, il pouvait lire l'ancien fichier dans la mémoire, la modifier, puis écrire de nouveau vers le même fichier – briddums
L'utilisation d'un fichier temporaire intermédiaire présente l'avantage que si quelque chose ne va pas, vous ne perdez pas les données. En outre, si le fichier est trop volumineux pour tenir dans la mémoire, il peut être lu ligne par ligne pour le traitement. –
Merci. L'utilisation d'un fichier temporaire semble trop lente. Exemple de code: Dim CurrentLine sous forme de chaîne() tempFile.AutoFlush = True Do Until origFile.EndOfData \t CurrentLine = origFile.ReadFields \t CurrentLine (1) = CurrentLine (1) .Replacer ("ABC", "") « convertirait ABC123 à 123 \t pour l'index en entier = 0 à currentLine.Count - 2 \t \t tempFile.Write (CurrentLine (index) et "") \t Suivant \t \t tempFile.Write (CurrentLine (CurrentLine. Nombre - 1)) \t \t tempFile.WriteLine() boucle tempFile.Flush() tempFile.Dispose() origFile.Dispose() IO.File.Copy (tempFile, origfile, True) IO.File.Delete (tempFile) ' – donbyte