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

Windows Forms Discussion :

supprimer un ligne d'un fichier txt en fonction d'un autre


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 5
    Points
    5
    Par défaut supprimer un ligne d'un fichier txt en fonction d'un autre
    Bonjour,
    Voila j'ai crée un programme qui permet d'ajouter des sites a bloquer dans le fichier host. Pour ce qui est du blocage tout va bien les nom des sites bloqués sont stockés dans un fichier txt en plus d'êtres inscrits dans le fichier host.

    Mon problème c'est que je n'ai pas réussi a enlever un site du fichier host en particulier. j'avais penser comparer le fichier des sites bloqués avec le fichier host et de supprimer la ligne ou le site a débloquer était présent mais je n'y arrive pas avez vous une idée?

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    N'hésitez pas si vous voulez des précisions

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Avec ce que tu explique il n'est pas facile de comprendre pratiquement ce que tu fait, comment tu le fait et ce qui ne marche pas ?


    J'ai essayé de remplacer le robinet de la salle de bain mais je n'y arrive pas
    Tu as une idée
    Tu veux des précisions ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Ok merci de m'avoir répondu, je vais faire de mon mieux:

    Je détaille. mon programme sert a ajouter des lignes dans le fichiers host de windows afin de bloquer des sites.
    il se présente de cette manière:
    http://img12.imageshack.us/my.php?im...nstitrefum.jpg

    Lorsque je clique sur le bouton bloquer ce site il me bloque le site grace a ce code:
    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
     private void bouton_bloquer_Click(object sender, EventArgs e)
            {
     
     
                if (sab.Text == "")
                {
                    MessageBox.Show("Aucun site entré!");
                }
                else
                {
                    lbbloquer.Items.Add(sab.Text);
                    FileStream fs = new FileStream("block.txt", FileMode.Append, FileAccess.Write);
                    StreamWriter sw = new StreamWriter(fs);
                    sw.WriteLine(sab.Text);
                    sw.Close();
                    FileStream fs2 = new FileStream("C:/WINDOWS/system32/drivers/etc/hosts", FileMode.Append,FileAccess.Write);
                    StreamWriter sw2 = new StreamWriter(fs2);
                    sw2.WriteLine("127.0.0.1 " + sab.Text);
                    sw2.Close();
                    sab.Clear();
                }
                sab.Focus();
     
     
     
     
            }
    pour le bouton tout débloquer je procède ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     private void button1_Click(object sender, EventArgs e)
            {
                lbbloquer.Items.Clear();
                FileStream fs = new FileStream("C:/WINDOWS/system32/drivers/etc/hosts", FileMode.Create, FileAccess.Write);
                fs.Close();
            }
    et mon problème concerne le bouton "débloquer ce site " je ne sais pas comment faire pour supprimer une ligne spécifique dans le fichier hosts qui correspondrait a un site bloque de la liste box de gauche.
    la liste des sites bloques par mon programme étant sauvegardé dans un fichier texte nommé block.

    J'ai essayé d'être le plus clair possible

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Si je comprends, pour tout debloquer, tu ecrit betement un fichier vide

    Pour debloquer UN site tu dois lire ton fichier, le reecrire en passant les lignes que tu veux debloquer

    Soit en lisant tout en memoire et puis réecriture en écrasant le fichie
    Soit en passant par un fichier intermédiaire et puis renommer a la fin
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    J'avais tenté de faire un tri en passant par un fichier intermédiaire, mais pas moyen d'y arriver . Après j'ai essayé en effaçant le contenu du fichier host puis en recopiant les éléments de du fichier block sauf celui qui est a débloquer mais ça marche pas alors que dans le principe ça devrait.

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    mais ça marche pas alors que dans le principe ça devrait


    Ca c'est la définition fondamentale de "ca marche pas"

    Et a nouveau que fais tu exactement
    Et qu'est ce qui ne marche pas précisément ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    bon voila le code que j'avais mis pour le bouton "débloquer un site"

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     private void btunlock_Click(object sender, EventArgs e)
            {
                if (lbbloquer.SelectedItem == null )
                {
     
                    MessageBox.Show("veuillez selectionnez un site a débloquer!");
                }
                else
                {
                    FileStream fs = new FileStream("unblock.txt", FileMode.Create, FileAccess.ReadWrite);
                    StreamWriter swun = new StreamWriter(fs);
                    swun.WriteLine("127.0.0.1 " + lbbloquer.SelectedItem);
                    swun.Close();
                    fs.Close();
     
     
                    FileStream fsun = new FileStream("unblock.txt", FileMode.Open, FileAccess.ReadWrite);
                    StreamReader sr = new StreamReader(fsun);
                    string unblock=sr.ReadLine();
     
                    FileStream fs2 = new FileStream("block.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                    StreamReader sr2 = new StreamReader(fs2);
     
                    FileStream fs3 = new FileStream("C:/WINDOWS/system32/drivers/etc/hosts", FileMode.Create, FileAccess.Write);
                    StreamWriter sw = new StreamWriter(fs3);
                    string block = sr2.ReadLine();
     
                    while (block!=null) //je parcours le fichier block jusqu'a la fin
                    {
                        while(block!=unblock)// si la ligne block differente de fichier unblock
                        {
                            sw.WriteLine("127.0.0.1 " + block);//je recopie la ligne block 
                            sr.ReadLine();
     
                        }
                        //sinon bah je la met pas dans host
                        sr2.ReadLine();
                   }
     
                    sw.Close();

  9. #9
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    On peut jouer au devinettes...
    Mais ce n'est peut-etre pas le but !

    Ton probleme problème pratiquement c'est quoi ?

    A part une boucle sans fin

    Tu as déja essayé le debugueur ?
    Ca aide souvent a comprendre le déroulement d'un code
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    bon concrètement . je voudrais lorsque je clique sur débloquer un site, écraser mon fichier host(le rendre vierge)puis y mettre tout les site a bloquer moins celui que je veux débloquer et qui a était sélectionner dans la liste de gauche afin qu'on puisse y accéder via notre navigateur.

    le c'était pour dire de parcourir le fichier block jusqu'à la fin mais je me suis trompé apparemment

  11. #11
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Ton idee de base est bonne : c'est déja ca !
    Par contre, je pense que tu devrais quand meme regarder ton code de pres et t'aider du debugueur pour verifier que ce que tu écris corresponds a ce que tu attends

    C'est comme ca qu'on apprends le mieux !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Points : 57
    Points
    57
    Par défaut
    Moi j'aurai mis toutes les lignes de ton fichier dans une List
    ensuite j'aurai supprimé les lignes souhaités dans ma liste grâce à leurs index
    et pour finir j'aurai inséré ma List mis à jour dans le fichier txt

  13. #13
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    C'est bon je m'en suis sortis avec ce code:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    private void btunlock_Click(object sender, EventArgs e)
            {
                if (lbbloquer.SelectedItem ==null)
                {
                    MessageBox.Show("vous n'avez pas selectionnez de site!");
                }
                else
                {
                    lbdb.Items.Add(lbbloquer.SelectedItem);
     
     
                    FileStream fsblock = new FileStream("block.txt", FileMode.Open, FileAccess.ReadWrite);
                    StreamReader srblock = new StreamReader(fsblock);
     
                    FileStream fshost = new FileStream("C:/WINDOWS/system32/drivers/etc/hosts", FileMode.Create, FileAccess.ReadWrite);
                    StreamWriter swhost = new StreamWriter(fshost);
     
                    string x = srblock.ReadLine();
     
                    while (x != null)
                    {
                        if (x.CompareTo(lbbloquer.SelectedItem)==0 )
                        {
                            MessageBox.Show("le site est débloqué");
                        }
                        else
                        {
                            swhost.WriteLine("127.0.0.1 " + x);
                        }
                        x= srblock.ReadLine();
                    }
                    lbbloquer.Items.Remove(lbbloquer.SelectedItem);
                    srblock.Close();
                    swhost.Close();
                    fsblock.Close();
                    fshost.Close();
     
     
     
                    FileStream fsblock2 = new FileStream("block.txt", FileMode.Open, FileAccess.ReadWrite);
                    StreamWriter swblock = new StreamWriter(fsblock2);
     
                    FileStream fshost2 = new FileStream("C:/WINDOWS/system32/drivers/etc/hosts", FileMode.Open, FileAccess.ReadWrite);
                    StreamReader srhost = new StreamReader(fshost2);
     
                    string y = srhost.ReadLine();
     
                    while (y != null)
                    {
                        swblock.WriteLine(y);
                        y = srhost.ReadLine();
     
                    }
                    srhost.Close();
                    swblock.Close();
                    fsblock2.Close();
                    fshost2.Close();
     
     
     
     
     
     
                }
            }
    Merci encore de votre aide

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

Discussions similaires

  1. supprimer une ligne d'un fichier .txt
    Par gonzo59 dans le forum C#
    Réponses: 8
    Dernier message: 17/03/2009, 09h29
  2. Réponses: 2
    Dernier message: 11/06/2008, 22h37
  3. Supprimer une ligne dans un fichier .txt
    Par lince102 dans le forum MATLAB
    Réponses: 12
    Dernier message: 31/01/2008, 10h19
  4. supprimer une ligne d'un fichier txt
    Par warubi dans le forum C++
    Réponses: 5
    Dernier message: 10/01/2007, 18h57
  5. [VB.NET]Supprimer première ligne d'un fichier TXT
    Par Golzinne dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/11/2006, 16h03

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