Lire un fichier texte ligne par ligne en vb.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 77 332 fois - Téléchargée 32 fois

Contenu du snippet

Bonjour,

Après une petite recherche sur différents moteurs et site de programmation, j'ai remarqué qu'il n'éxistait pas de code pour effectuer une lecture sur un fichier texte ligne par ligne, qui soit facilement compréhensible, j'essaie donc d'apposer un bout de code, j'espère qu'il vous servira autant qu'à moi.

Source / Exemple :


Sub lectureFichier(ByVal fichier As String)

        Try
            Dim monStreamReader As New StreamReader(fichier) 'Stream pour la lecture
            Dim ligne As String ' Variable contenant le texte de la ligne

           do
                ligne = monStreamReader.ReadLine
                MsgBox(ligne) 
                ' TRAITEMENT A EFFECTUER SUR LA LIGNE ICI
           Loop Until ligne Is Nothing            monStreamReader.Close()

        Catch ex As Exception
            MsgBox("Une erreur est survenue au cours de l'accès en lecture du fichier de configuration du logiciel." & vbCrLf & vbCrLf & "Veuillez vérifier l'emplacement : " & fichier, MsgBoxStyle.Critical, "Errueur lors e l'ouverture du fichier conf...")
        End Try

    End Sub

Conclusion :


Je sais qu'il existe une meilleur solution pour indiquer la fin du fichier, en vb 6 c'étais EOF (end of file), mais je n'ai pas le temps de regarder.

Si quelqu'un connait la solution, je modifierais la source.

A voir également

Ajouter un commentaire

Commentaires

jrbleboss
Messages postés
480
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
3 septembre 2007
-
Pas mal pour les débutants. C'est bien !!!
Mais je suis étonné que cela n'existe pas deja, enfin je te crois.

Bonne prog!!!!!!!

JRB
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32 -
mouaip...
pourtant rien ne vaut :
[C#]
While ((line = sr.ReadLine()) != null)
...
Wend

[VB.NET]
Do
line = sr.ReaderLine()
...
Loop Until line Is Nothing

Séb
cs_nicolas22
Messages postés
5
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
16 mars 2005
-
Jrb : Le code existe, mais je le trouve souvent bien long, bien mal documenté, et surtout, rarement inclut dans un try catch.
Je trouve que le try catch est obligatoire lorsqu'un logiciel a besoin d'une ressource extérieur.
Sinon, le code existe j'en ai trouvé plein (mais peu marchait réellement).
tresorsdevie
Messages postés
135
Date d'inscription
lundi 17 juin 2002
Statut
Membre
Dernière intervention
20 juillet 2013
-
deja present ici :
http://www.vbfrance.com/code.aspx?ID=8235

effectivement il existe une autre solution pour la fin du fichier:

'lecture du flux
Dim Monflux As Stream
Monflux = File.OpenRead(TcheminFichier.Text)

'lecture ligne à ligne
Dim Maligne As StreamReader = New StreamReader(Monflux, System.Text.Encoding.ASCII)
Maligne.BaseStream.Seek(0, SeekOrigin.Begin)
'.peek defini le caractere suivant, si =-1 c'est qu'il n'y a plus de caractere
'donc la fin du fichier est atteinte
While Maligne.Peek() > -1
Dim rep As String = Maligne.Peek
TResFichier.Text = TResFichier.Text + Maligne.ReadLine() + vbNewLine
End While
Maligne.Close()
cs_nicolas22
Messages postés
5
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
16 mars 2005
-
tresorsdevie :
Effectivement c'est une autre façon de vérifier la condition de fin du fichier. on en apprend tous les jours.

J'avais effectivement vu ton source, et c'est un code très bien organisé et très performant. Peut être trop par rapport à ce que je viens de poster.

Ce code a pour but de permettre à des débutants de connaitre un code de lecture simple, je ne propose pas de macher le travail du programmeur apprentis (dont je fais partie), mais simplement de lui donner une clé. :)

C'est pourquoi cette fonction ne prend que 6 ou 7 lignes et pas plus. :)

Ton post m'a permis de mieux regarder ton code, et donc d'en apprendre encore sur les fichiers en vb ! Merci ! :) Vais m'en reservir c'est sûre.

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.