IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

supprimer une ligne d'un fichier .txt


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Points : 30
    Points
    30
    Par défaut supprimer une ligne d'un fichier .txt
    Bonjour à tous,

    Voila mon problème, j'aimerais effacer une ligne d'un fichier texte et je ne vois pas comment m'y prendre.

    voila les détails:

    J'ai un fichier texte avec des noms de jours écrit avec WriteLine ensuite j'ai crée un form qui contient une combobox pour choisir le joueur à supprimer. Quand j'en sélectionne un j'écris la ligne dans un string. J'aimerais pouvoir trouver la ligne dans le fichier et la supprimer.

    Pour la trouver j'utiliserais un while mais pour la supprimer je vois pas comment faire.

    Merci d'avance pour votre aide.

  2. #2
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Le problème est que, encore une fois, la manipulation de fichier texte avec StreamReader et StreamWiter ne permet pas de faire tout (recherche, insertion au milieu, etc.. )

    Il faut donc que tu trouves un autre moyen. Les noms des joueurs sont inscris les uns en dessous des autres dans le fichier ?

    Si c'est le cas, tu pourrais faire des readLines(), identifier le nom du joueur a supprimer, sélectionner toutes les lignes avant et après celle la et les réécrire dans le fichier. C'est une solution possible ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    oui elle sont une en dessous de l'autre.

    Je doit avouer que je m'attendais un peu à une réponse comme ça...

    Je n'ai trouvé aucun tuto sur le net qui expliquait comment supprimer une ligne... ça m'a un peu tracassé

    En tous cas merci pour ta réponse!

    Je vais tenter de mettre en place le système que tu m'as décris. Mais je me pose une question, il faut que je crée un autre fichier? ou il y a moyen de faire ça dans le même? (je suis débutant )

  4. #4
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Si tu fais un StreamWiter sur le fichier sans préciser de Append ou autre, lorsque tu vas écrire, tu vas écraser automatiquement ce fichier.
    Pas besoin de Save() ou autre (toute façon, la fonction n'existe pas )
    Juste penser à bien fermer ton StreamWiter, par Close()

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    ok merci, je crois que vois bien la démarche

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Le plus simple est de parcourir toutes les lignes de ton fichier, de les écrire les unes après les autres dans un nouveau fichier quand elles remplissent une condition, et ensuite de supprimer l'ancien fichier et de renommer le nouveau avec le nom de l'ancien...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    re bonsoir,

    Voila, j'ai fait une boucle qui s'arrête à la ligne que je souhaite supprimer.
    A partir de cette ligne, est il possible de recopier chaque ligne du dessous une ligne vers le dessus?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      string result = ComboDelPlayer.Text;
                //MessageBox.Show(result);
                StreamReader sr = new StreamReader(fichier.FichierJoueurs);
     
                while(LigneToDelete!=result)
                {
                    LigneToDelete = s;
                    s = sr.ReadLine();
                    //MessageBox.Show(LigneToDelete);
                }
                sr.Close();
    J'espère que j'arrive a faire comprendre ce que je veux faire .

    Merci.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    Voila j'ai réussi

    Merci a vous pour votre aide!

    Je vous met le code, il est surement pas très "propre" mais ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    string LigneToDelete;
     
                string result = ComboDelPlayer.Text;
     
                StreamWriter sw = null;
                sw = File.AppendText(fichier.FichierTemp);
     
     
                StreamReader sr = new StreamReader(fichier.FichierJoueurs);
                string s = sr.ReadLine();
                while(s!=null)
                {
                    LigneToDelete = s;
                    s = sr.ReadLine();
     
     
                    if (LigneToDelete != result)
                    {
                        sw.WriteLine(LigneToDelete);
                    }
     
                }
                sr.Close();
                sw.Close();
     
                File.Delete(fichier.FichierJoueurs);
                File.Move(fichier.FichierTemp, fichier.FichierJoueurs);

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    il ne te reste plus qu'à utiliser le mot-clé using avec tes streams pour qu'ils soient fermés et disposés automatiquement et proprement par le framework et ça sera nickel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer une ligne d'un fichier .txt
    Par beber005 dans le forum Général Java
    Réponses: 1
    Dernier message: 09/04/2013, 16h13
  2. Supprimer une ligne dans un fichier .txt
    Par lince102 dans le forum MATLAB
    Réponses: 12
    Dernier message: 31/01/2008, 10h19
  3. supprimer une ligne d'un fichier txt
    Par warubi dans le forum C++
    Réponses: 5
    Dernier message: 10/01/2007, 18h57
  4. extraction d'une ligne d'un fichier txt
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 19/01/2006, 15h28
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo