cheryt
Messages postés8Date d'inscriptionvendredi 6 février 2004StatutMembreDernière intervention15 décembre 2008
-
24 nov. 2008 à 10:40
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
24 nov. 2008 à 17:08
Bonjour,
Je souhaite inserer une ligne ex: après la ligne 18 (en vb express 2008) dans un fichier txt existant, mais malgré toutes les lectures existantes sur l'insertion de ligne, je ne trouve pas ma réponse...quelqu'un pourrait-il m'aider ?
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 24 nov. 2008 à 11:29
Salut,
Ce que tu pourrais faire, c'est par exemple, lire tout le contenu de ton fichier text ligne par ligne et le stocker dans une variable "Buffer", puis tu recréer une copie de ton fichier en faisant une boucle sur la variable "Buffer" et quand tu arrive à la ligne 18(boucle), tu y inséres ta nouvelle ligne, puis reprend la lecture de la boucle....Enfin, je ne sais pas si c'est vraiment le top comme solution, mais bon....^^
Regarde sur Codyx.org, nombreux snippets en relations avec la lecture et l'écriture dans une fichier txt....
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 24 nov. 2008 à 11:37
Salut,
L'astuce serait de créer une collection qui va lire tout le contenu de ton fichier et ensuite on utilise la méthode Insert de la collection pour ajouter la ligne que tu souhaites.
Et pour terminer, on écrit le contenu de la collection dans le fichier.
Voici une fonction que j'ai crée qui le fait directement :
Sub Ajout_Ligne_Fichier(ByVal CheminFichier As String, ByVal no_ligne As Integer, ByVal Ligne_a_ajouter As String)
' CheminFichier : doit contenir le chemin complet du fichier à modifier (exemple : D:\test.txt)
' no_ligne : doit contenir le numéro de ligne où on souhaite insérer la ligne
' (exemple : Tu souhaites ajouter après la ligne 18 donc no_ligne doit être égal à 19)
' Ligne_a_ajouter : doit contenir le texte que tu souhaites ajouter
Dim Contenu_Fichier As New System.Collections.Generic.List(Of String)()
'Création d'une collection qui va contenir tout le contenu du fichier txt lu
Dim SR As New IO.StreamReader(CheminFichier)
' Déclaration et intialisation du stream pour lire le fichier
Do Until SR.Peek = -1 ' Lecture du contenu du fichier du début jusqu'à la fin
Contenu_Fichier.Add(SR.ReadLine())
' SR.ReadLine() : lit une ligne du fichier à chaque fois
Loop
SR.Close() ' Fermeture du fichier
' A ce moment là, la collection Contenu_Fichier contient tout le contenu du fichier
' spécifié dans CheminFichier
' Il faut maintenant insérer le contenu de Ligne_a_ajouter dans la collection
Contenu_Fichier.Insert(no_ligne - 1, Ligne_a_ajouter)
' Le contenu de Ligne_a_ajouter a été inséré dans Contenu_Fichier
' Pour terminer, il ne reste plus qu'à écrire tout le contenu de la collection
' dans ton fichier
Dim SW As New IO.StreamWriter(CheminFichier)
' Déclaration et intialisation du stream pour écrire dans le fichier
For nb As Integer = 0 To Contenu_Fichier.Count - 1
' Boucle sur tous les éléments contenus dans la collection
SW.WriteLine(Contenu_Fichier.Item(nb))
' Ecriture de chaque élément dans le fichier
Next
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 24 nov. 2008 à 17:08
Salut,
Même chose que Fauve, mais en plus court:
Dim Lines As New List(Of String)(IO.File.ReadAllLines("C:\Fichier.txt"))Lines.Insert(17, "Nouvelle ligne 18") ' index 17 car la 1ère ligne index 0
IO.File.WriteAllLines("C:\Fichier.txt", Lines.ToArray)