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 :

[vb.net] Supprimer les lignes vide d'un fichier texte


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Par défaut [vb.net] Supprimer les lignes vide d'un fichier texte
    Bonjour à tous,

    Malgré des recherches sur internet je n'ai pas trouvé la solution précise à mon problème à priori simple.

    Je souhaite compter le nombre de ligne d'un fichier texte (cette partie fonctionne correctement) mais le problème c'est qu'il arrive qu'il y ait quelques lignes vides dans le fichier.

    Ma question est donc de savoir comment supprimer ces lignes vide avant de compter les lignes du fichier.

    Voici mon code actuel pour compter les lignes, dans lequel il faudrait ajouter la suppression des lignes vides.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Dim nombre_ligne As Integer
    nombre_ligne = 0
     
    Dim lines() As String = File.ReadAllLines(Dts.Variables.Item("mon_fichier_text").Value.ToString())
     
    Dim reader As New StreamReader(Dts.Variables.Item("mon_fichier_text").Value.ToString())
     
                For Each line As String In lines
                    nombre_ligne = nombre_ligne + 1
                Next
                reader.Close()
    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    je pense qu'il faut juste ajouter une condition au lieu de supprimer les lignes vides :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For Each line As String In lines
                If (line.Trim().Length > 0) Then
                    nombre_ligne = nombre_ligne + 1
                End If
            Next
    Tu dois vérifier si la ligne est vide ou non, tu competeras au cas d'une non vide

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Par défaut
    Merci pour ta petite astuce ! ;-)

    C'est moins "propre" que la suppression mais je peux utiliser cette technique en attendant. Le problème c'est que le nombre de lignes vides aura tendance à augmenter avec le temps dans chaque fichier. Donc sans s'en occuper, il arrivera un jour ou mon fichier de 150 lignes comportera 115 lignes vides ^^

  4. #4
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    ci-aprés un code, qui lis juste les lignes non vides du fichier source, les recopier dans un autre fichier temporaire (de destination), et tu peux supprimer l'ancien aprés.

    l'idée, c'est d'avoir une méthode pour lire et écrire dans un fichier et à toi de voir aprés (sachant qu'il existe d'autres méthodes à faire).

    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
    '' StreamReader pour lire le fichier source
            Dim reader As StreamReader = New StreamReader("C:\Test_Source.log", System.Text.Encoding.Default)
     
            '' StreamWriter pour lire le fichier temporaire de destination
            Dim writer As StreamWriter = New StreamWriter("C:\Test_Destination.log")
     
            Dim str As StringBuilder = New StringBuilder()
     
            Dim temp As String = String.Empty
     
            While (reader.Peek >= 0)
                temp = reader.ReadLine()
                If (temp.Trim.Length <> 0) Then
                    str.Append(temp + vbCrLf)
                End If
            End While
     
            writer.WriteLine(str)
     
            writer.Close()
            reader.Close()
     
            ' Aprés tu peux supprimer l'ancien si tu veux
            File.Delete("C:\Test_Source.log")
    j'espère que ce code là, ça seras un peu plus "propre" que l'autre

    NB : n'oublie pas que tu peux travailler avec d'autres membres de la classe File ou FileInfo, comme vérification de l'existance du fichier...

    http://msdn.microsoft.com/fr-fr/libr...o_members.aspx

    bonne courage

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Par défaut
    Merci beaucoup à toi !

    Cependant, en attendant ta réponse j'ai parcouru une autre piste, celle de trouver a quel moment étaient insérées ces lignes vides.

    Il se trouve que j'ai obtenu la ligne de code responsable.

    Le code suivant permet de mettre une ligne d'information en début de fichier. Cependant cela ajoute également une ligne vide en fin de fichier !

    Ma question, qui m'éviterait tout le "rafistolage" serait donc de supprimer cette insertion de ligne vide en fin de fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File.WriteAllLines(Dts.Variables.Item("Chemin_ListRessource").Value.ToString(), New String() {Dts.Variables.Item("Path_Ressource").Value.ToString() + ";" + Dts.Variables.Item("ListRessource_SrvBD").Value.ToString(), File.ReadAllText(Dts.Variables.Item("Chemin_ListRessource").Value.ToString())})
    Merci d'avance si vous avez une idée.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Par défaut
    Un problème semble-t-il similaire ici mais il passe du coup par SW.

    http://social.msdn.microsoft.com/For...8-54ec72e6b7e2

  7. #7
    Membre expérimenté Avatar de benito9253
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 205
    Par défaut
    Je réponds un peu tard mais ca serviras peut être a quelqu'un...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim sr As New System.IO.StreamReader("MonFichier.txt")
    Dim str1 As String = sr.ReadToEnd()
    sr.Close()
    str1 = str1.Replace(vbNewLine, String.Empty)
    Dim sw As New System.IO.StreamWriter("MonFichier.txt")
    sw.WriteLine(str1)
    sw.Close
    Voila, j'ai pas testé mais normalement c'est bon...

Discussions similaires

  1. [LV2009] Supprimer les lignes vides dans un fichier texte
    Par Super2006 dans le forum LabVIEW
    Réponses: 3
    Dernier message: 11/11/2011, 14h32
  2. Supprimer une ligne vide dans un fichier texte
    Par Tibà22 dans le forum Débuter
    Réponses: 2
    Dernier message: 18/04/2011, 16h58
  3. Supprimer les lignes vides d'un fichier
    Par Invité dans le forum VBScript
    Réponses: 2
    Dernier message: 26/09/2008, 16h21
  4. Réponses: 2
    Dernier message: 04/05/2006, 13h10
  5. supprimer les lignes vides?
    Par VinnieMc dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2006, 14h01

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