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

cheryt 8 Messages postés vendredi 6 février 2004Date d'inscription 15 décembre 2008 Dernière intervention - 24 nov. 2008 à 10:40 - Dernière réponse : Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention
- 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
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 24 nov. 2008 à 11:29
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

Merci cs_Exploreur 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Exploreur
Meilleure réponse
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 24 nov. 2008 à 11:37
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 

Merci cs_fauve 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_fauve
Meilleure réponse
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 24 nov. 2008 à 17:08
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)

Merci Kevin.Ory 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Kevin.Ory

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.