begin process at 2012 02 12 05:57:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VB.NET

 > LIRE UN FICHIER TEXTE LIGNE PAR LIGNE EN VB.NET

LIRE UN FICHIER TEXTE LIGNE PAR LIGNE EN VB.NET


 Information sur la source

Note :
6,7 / 10 - par 10 personnes
6,70 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VB.NET Source .NET ( DotNet ) Niveau :Débutant Date de création :14/03/2005 Date de mise à jour :16/03/2005 09:12:26 Vu :61 855

Auteur : nicolas22

Ecrire un message privé
Commentaire sur cette source (26)
Ajouter un commentaire et/ou une note

 Description

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

  • 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
  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.


 Historique

16 mars 2005 09:12:27 :
D'après le commentaires d'amazing, la boucle de lecture est plu optimisé car la condition d'éxécution est plus "formel". Le code est donc plus propre. On remarque que le EOF est remplacé par "is nothing". Merci amazing

 Sources de la même categorie

Source .NET (Dotnet) MODIFICATION DATE DE WINDOWS EN VB.NET ET VBA par us_30
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOI DE MAIL AVEC PIÈCE JOINTE par EhJoe
Source .NET (Dotnet) AMUSONS NOUS AVEC UN LABEL ^^ par Adn56
Source avec Zip Source avec une capture Source .NET (Dotnet) UN NAVIGATEUR INTERNET EN VB.NET par azrti
Source avec Zip Source .NET (Dotnet) CONVERSION DE DEVISE MONAITAIRE VIA UN SERVICE WEB par bigmonkey7

Commentaires et avis

Commentaire de jrbleboss le 14/03/2005 21:38:43

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

Commentaire de sebmafate le 15/03/2005 11:45:08 administrateur CS

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

Commentaire de nicolas22 le 15/03/2005 14:06:14

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).

Commentaire de tresorsdevie le 15/03/2005 15:19:48

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()

Commentaire de nicolas22 le 15/03/2005 15:31:00

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.

Commentaire de nicolas22 le 15/03/2005 15:32:05

oops j'oubliais ! Tu déclare une variable locale rep dans ta boucle. Tu gagnes effectivement une ligne de code, par contre ce ne serais pas un peu lourd pour le prog ?

Commentaire de tresorsdevie le 15/03/2005 15:35:03

nicolas22 : "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."

c'est l'essentiel ;)
bonne continuation!

Commentaire de tresorsdevie le 15/03/2005 18:09:49

si tu croit que le but  est de gagner une ligne de code ,  c'est que tu n'a rien compris

ce que je reproche a ton code c'et la maniere dont tu boucle.
je cite : "ligne = "départ" 'ici vou pouvez mettre ce que vous voulez du moment que la variable est non vide
While ligne <> ""
etc...
end while.

je dirait que ce n'est pas la bonne methode a employer , c'est plus de la bidouille pour moi ...tant qu'on arrive a ce qu'on veut.. me diras tu...
c'est ce qui fait la difference entre un programmeur et un bidouilleur..

Commentaire de Amazing le 15/03/2005 18:40:39

Désolé ,nicolas22,mais :
Personellement,je ne pense pas que tout ton code soit un exemple à suivre  car:
tu assigne à la variable "ligne" une valeur pour ensuite verifié la condition " ligne <> "" ",
l'assignation de la variable -> c'est une ligne de trop
je rejoint le code de sebmafate:

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
qui me semble plus un exemple à suivre

sinon,tout à fait d'accord sur l'utilisation du "try catch" ,c'a fait plus VB.NET :-)

pour le code de tresorsdevie:

Dim Maligne As StreamReader = New StreamReader(Monflux, System.Text.Encoding.ASCII)
il a utilisé un decodage en ASCII,(qui ne prend pas les caractère accentué d'un fichier texte ,sauf dans certain cas)

System.Text.Encoding.Default,serai peut-etre plus approprié

informatiquement votre

Amazing

Commentaire de tresorsdevie le 15/03/2005 19:03:51

commentaire ++ amazing
tu as tout juste
;)

Commentaire de sebmafate le 15/03/2005 19:25:19 administrateur CS

d'ailleur dans mon exemple C#... la syntaxe est fouireuse (honte à moi :()

while ((line = sr.ReadLine()) != null) {
...
}

Séb

Commentaire de nicolas22 le 16/03/2005 09:18:26

merci amazing !!! le is nothing, je l'ai cherché longtemps ! :)

Trésorsdevie :

Tu t'emballes un peu, je n'ai jamais dis que ton code te faisais gagner une ligne !?!?!? J'ai simplement demandé si de déclarer une variable et l'initialisé dans une boucle n'était pas un peu lourd pour le programme. Je me renseigne ! Méacoulpa.

Pour ton pique concernant les programmeurs et "bidouilleurs", je te signale que nous ne sommes pas tous des programmeurs avertis dans tous les langages. Si comme je le dis dans les explications de mon code, je reste encore une débutant en vb, je pense avoir des qualités dans bien d'autres langages succeptible d'être apprécié.

Il s'agissait de mon premier source sur vbfrance, je n'en reposterais plus, car si des fois nous tombons sur des commentaires constructif comme celui de Amazing, qui nous fait avancé, il y a des commentaires dont on se passerait bien.

P.S : Je viens de jeter un coup d'oeil à tes sources. Ouhaaa ! Microsoft ne devrait pas tarder à te contacter !

Commentaire de jadot le 22/03/2005 08:45:14

La methode avec EOF existe toujours non ?
Je l'utilise toujours :-)
Le code suivant fonctionne en VB.net chez moi.
Quelqu'un peut-il me dire ce qu'il a de mauvais ?
Merci.

    Sub lectureFichier(ByVal fichier As String)
        Dim ligne As String ' Variable contenant le texte de la ligne

        FileOpen(1, fichier, OpenMode.Input)
        While Not EOF(1)
                 ligne = LineInput(1)
                 ' TRAITEMENT A EFFECTUER SUR LA LIGNE ICI
        End While
        FileClose(1)

    End Sub

Commentaire de jadot le 29/03/2005 09:21:25

Meme si j'ai posé une bete question ca me ferais plaisir si quelqu'un pouvait me repondre ;-)
Un site avec 404257 membres parti en vacances en meme temps peut-etre.

Commentaire de sebmafate le 29/03/2005 09:32:24 administrateur CS

.Net fournit des classes spécifiques et optimisé pour l'accès aux fichiers.
De plus, elles sont plus fidèles au modèle objet.

Maintenant, ton code est correct en VB6.

Commentaire de jadot le 29/03/2005 10:16:26

Merci pour ta reponse sebmafate.
Effectivement je n'ai pas essayé sur de gros fichiers pour comparer les performances, il faudra que j'essaye.

Commentaire de w_a_mag le 21/04/2005 22:08:11

je suis un débutant avec le vb
je creer une application et j ai besoin d' aide C-V-P
je ve le code d'une bouton ajout pour ajouter un element  dans un fichier
merci

Commentaire de w_a_mag le 21/04/2005 22:13:44

de l'aide :
aminecom_4@hotmail.com

Commentaire de bam_soft le 15/02/2006 10:49:19

je cherche un code qui fait "lecture fichier texte"
BEN AMMAR Mohamed I4 2006

Commentaire de LaPatoshe le 05/05/2006 01:17:26

C'est cour, simple, explicite. Merci cela m'a été bien utile.

Commentaire de ankou22 le 15/05/2007 11:07:11

Merci Amazing pour ta remarque sur les caractères accentuées qui ne sont pas pris en compte avec :

Dim Maligne As StreamReader = New StreamReader(Monflux)

ou

Dim Maligne As StreamReader = New StreamReader(Monflux, System.Text.Encoding.ASCII)

Mais qui le sont avec :

Dim Maligne As StreamReader = New StreamReader(Monflux, System.Text.Encoding.Default)

Commentaire de SlaytanIK le 29/11/2007 11:36:03 6/10

Voila l'equivalent de EOF en .NET c'est : .EndOfStream

CODE :

'Verification de l'existance du FichierALire
If System.IO.File.Exists(FichierALire)
  Try
    Dim sr As StreamReader = New StreamReader(FichierALire, System.Text.Encoding.Default)
    Dim ligne As String
    '--- Traitement du fichier ligne par ligne
    While Not sr.EndOfStream()
      ligne = sr.ReadLine()
      MsgBox(ligne)
      'TODO : CODE TRAITEMENT FICHIER

    End While
    '--- Referme StreamReader
    sr.Close()

    Catch ex As Exception
      'Traitement de l'exception sinon :
      Throw ex
    End Try
Else
  MsgBox("fichier " & FichierALire & " inexistant", MsgBoxStyle.Critical, " -- ! -- ")
End If

Commentaire de gh2005 le 08/03/2008 21:19:03

Vous êtes tous très fort, mais côté VB.NET, je me contente de m'instruire.
Alors, les mêmes excellents conseils, mais pour les
  FICHIERS DIRECTS (sans problème en VB6)
raviraient le vieil homme que je suis... devenu.
Merci à tous !
Nestorius

Commentaire de corbamis le 08/05/2008 17:24:42

Merci SlaytanIK, j'avais le problème suivant, avec le premier exemple, à savoir la comparaison à Nothing de la ligne lue.
Si jamais la ligne lue était une ligne vide, cela mettait fin à la boucle, ce que ne fait pas le EndOfStream, justement, et permet de lire au-delà des lignes vides.

Commentaire de ZLASSI le 09/10/2008 09:50:50

Bonjour à tous,

Quelqu'un peut m'aider à faire concaténer deux fichiers txt dans un nouveau fichier txt?
le contenu de a.txt et b.txt seront deplacées dans c.txt

Merci d'avance

Commentaire de SpiderTomtom le 23/07/2009 23:05:31

Bonsoir a tous,

Voila j'ai suivi le code donné en début et tout fonctionne à merveille. Seulement étant débutant, j'ai ma petite question. J'ai un fichier texte qui me sert de base de donnée. C'est pour cela que je voudrais l'inclure à "My ressources" pour qu'il ne puisse pas être modifié par un tiers. J'ai donc modifié la ligne comme ceci :

Dim monStreamReader As New StreamReader("application.My.resources.fichier.txt")

Mais lors de l'éxécution du programme, le catch prend direct le relais et m'affiche donc l'erreur.
Cela est-il possible donc de faire ainsi et si oui comment ??

Merci par avance

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,151 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales