Inserer une ligne à un endroit particulier dans un fichier txt en vb express 200 [Résolu]

Messages postés
8
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
15 décembre 2008
- - Dernière réponse : Kevin.Ory
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Derniè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 ?

merci. 
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
11
3
Merci
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....

A+
Exploreur

 Linux a un noyau, Windows un pépin

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 158 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Exploreur
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
6
3
Merci
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

        SW.Close() ' Fermeture du fichier

End Sub


++

Fauve
Pensez : Réponse Acceptée 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 158 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_fauve
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
3
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 158 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Kevin.Ory