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

VB.NET Discussion :

Chercher et supprimer du contenu dans un grand fichier texte


Sujet :

VB.NET

  1. #1
    Membre habitué Avatar de CLeBeR
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Points : 188
    Points
    188
    Par défaut Chercher et supprimer du contenu dans un grand fichier texte
    Bonjour,
    Je dois chercher et supprimer un grand nombre de lignes dans un fichier texte. Le problème, c'est que j'ai le code mais il est extrêmement long car le fichier contient plus de 800 000 lignes.
    Pour vous mettre dans le contexte, mon programme bloque plus de 800 000 sites dangereux en les ajoutant au fichier hosts. Les ajouter est très facile mais les retirer est plus difficile car il faut chercher dans le fichier hosts tout le contenu qui se trouve dans le fichier de site dangereux puis le supprimer.
    C'est cette opération qui prend du temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub DebloquerSitesDangereux()
            Dim FichierSiteDangereux As String = ("C:\Users\" & System.Environment.UserName & "\Documents\ListeDeSiteContenusDangereux.txt") 'Emplacement du fichier qui contient les sites dangereux
            Dim lines As List(Of String) = System.IO.File.ReadAllLines("C:\Windows\System32\Drivers\etc\hosts").ToList 'Lecture du fichier hosts qui contient déjà le contenu du fichier de sites dangereux
            For Each lineASupprimer As String In ListeDeSiteContenusDangereux 'ListeDeSiteContenusDangereux est un listof string chargée précédement qui contient le contenu du fichier de sites dangereux
                lines.Remove(lineASupprimer)
            Next
            System.IO.File.WriteAllLines("C:\Windows\System32\Drivers\etc\hosts", lines) 'On réecrit le hosts sans la liste de site dangereux c'est à dire la listof ListeDeSiteContenusDangereux
        End Sub

    Merci de votre aide !
    Pensez à voter pour une réponse qui vous aide ou pour une personne insolente !
    Si votre sujet est résolu, cliquez sur le bouton !

  2. #2
    Membre habitué Avatar de CLeBeR
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    Salut à tous, le problème est résolu merci à cs_Robert33 de vbfrance.

    L'idée est d'ajouter un commentaire en fin de ligne de chaque site ex:
    127.0.0.1 0--ass-cinema-newsp.da.ru # site dangereux
    127.0.0.1 0--fightingshaving.da.ru # site dangereux
    127.0.0.1 0--foodwarez.da.ru # site dangereux
    En optimisant un tout petit peu on arrive à des temps de traitement tout à fait honorables
    0.447 seconde pour l'ajout
    0.662 seconde pour la suppression
    le temps incompressible, quelque soit le langage, étant les accès disque

    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
    Private Sub AjoutSites()
        Using sw As StreamWriter = New StreamWriter(HostFilename, True)
            For Each line In ListeDeSiteContenusDangereux
                sw.WriteLine(line & " # site dangereux")
            Next
        End Using
    End Sub
    Private Sub EnleveSites()
        Dim lines As List(Of String) = New List(Of String)
        Using sr As StreamReader = New StreamReader(HostFilename)
            Dim line As String = sr.ReadLine()
            While (Not line Is Nothing)
                If Not line.EndsWith("# site dangereux") Then
                    lines.Add(line)
                End If
                line = sr.ReadLine()
            End While
        End Using
        File.WriteAllLines(HostFilename, lines)
    End Sub
    Et bonne année
    Pensez à voter pour une réponse qui vous aide ou pour une personne insolente !
    Si votre sujet est résolu, cliquez sur le bouton !

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

Discussions similaires

  1. Supprimé des lignes d'un fichier contenu dans un autre fichier
    Par nekcorp dans le forum Général Python
    Réponses: 12
    Dernier message: 05/05/2014, 21h27
  2. Réponses: 3
    Dernier message: 27/03/2013, 10h55
  3. comptage de balise <Page> dans un grand fichier XML
    Par funmatica dans le forum Général Python
    Réponses: 11
    Dernier message: 07/02/2012, 21h02
  4. [XL-2007] Créer une liste de validation à partir de données contenues dans un autre fichier
    Par familledacp dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/10/2011, 18h03
  5. Réponses: 2
    Dernier message: 17/07/2009, 18h24

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