COMMENT FAIRE : Lecture d'un fichier texte à l'aide de System.IO et de Visual Basic .NET (F302309)

Traductions disponibles Traductions disponibles
Numéro d'article: 302309 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F302309
Pour vous procurer une version Microsoft Visual C# .NET de cet article, reportez-vous à l'article F306777.
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit comment extraire des informations d'un fichier texte et comment utiliser une classe ArrayList pour présenter ces informations à l'utilisateur. Cet article contient les sections suivantes :

Configuration requise

Microsoft Visual Basic .NET

Lecture de fichiers texte à l'aide de Visual Basic .NET

L'ouverture et la lecture de fichiers pour un accès en lecture représentent une part importante de la fonctionnalité d'entrée/sortie (E/S - I/O en anglais), même si vous n'avez pas besoin d'écrire dans le fichier en question. Cet exemple traite de l'ouverture d'un fichier pour lecture, ce qui est utile dans le cas de fichiers texte, mais inapproprié aux fichiers binaires. L'exemple présenté utilise une des nombreuses méthodes permettant d'ouvrir un fichier. Bien que de nombreuses structures de données permettent de stocker les informations extraites d'un fichier, une classe ArrayList représente la structure la plus simple à utiliser. Pour ouvrir le fichier et lire son contenu, nous utilisons dans cet exemple des objets issus de l'espace de noms (Namespace) System.IO, en particulier la classe System.IO.StreamReader.

REMARQUE : Dans cet exemple, un fichier texte (.txt) est requis pour lecture.

Pour charger et lire le fichier texte à partir de Visual Basic .NET, procédez comme suit :
  1. Ouvrez Visual Studio .NET. Créez une nouvelle application console dans Visual Basic .NET. Visual Studio crée un Module, ainsi qu'une procédure Main() vide.
  2. Assurez-vous que le projet fait référence au moins à l'espace de noms System. Utilisez l'instruction Imports sur les espaces de noms System, System.IO et System.Collections, afin de ne pas avoir à rédiger de déclaration à partir de ces espaces de noms ultérieurement dans votre code. Vous devez placer ces instructions avant toute autre déclaration.
    Imports System
    Imports System.IO
    Imports System.Collections
  3. Pour ouvrir un fichier pour lecture, créez une nouvelle instance d'objet StreamReader et passez le chemin d'accès du fichier dans le constructeur, de la manière suivante :
    Dim objReader As New StreamReader("c:\test.txt")
  4. Vous aurez besoin d'une variable de type chaîne (String) pour enregistrer chaque ligne du fichier, au fur et à mesure de l'exécution du processus. Comme vous ajouterez ces lignes dans une classe ArrayList, déclarez et créez un objet de ce type également.
    Dim sLine As String = ""
    Dim arrText As New ArrayList()
  5. Il existe plusieurs façons de lire le fichier, dont notamment l'utilisation de la méthode ReadToEnd, qui permet de lire l'ensemble du fichier en une seule fois. Toutefois, dans le cadre de cet exemple, vous pouvez utiliser la méthode ReadLine pour insérer le fichier ligne après ligne. Lorsque la fin du fichier est atteinte, cette méthode renvoie " Nothing ", qui permet de mettre fin à votre boucle. Comme vous lisez chaque ligne du fichier, vous pouvez utiliser la méthode Add de ArrayList pour insérer les lignes dans votre classe ArrayList.
    Do
        sLine = objReader.ReadLine()
        If Not sLine Is Nothing Then
            arrText.Add(sLine)
        End If
    Loop Until sLine Is Nothing
    objReader.Close()
  6. Utilisez une boucle " For Each " pour afficher le contenu de votre classe ArrayList nouvellement remplie sur la console :
    For Each sLine In arrText
        Console.WriteLine(sLine)
    Next
    Console.ReadLine()
  7. Enregistrez et exécutez votre code ; cela entraîne l'affichage du contenu de votre fichier sur la console.

Listing complet du code

Imports System
Imports System.IO
Imports System.Collections

Module Module1

    Sub Main()
        Dim objReader As New StreamReader("c:\test.txt")
        Dim sLine As String = ""
        Dim arrText As New ArrayList()

        Do
            sLine = objReader.ReadLine()
            If Not sLine Is Nothing Then
                arrText.Add(sLine)
            End If
        Loop Until sLine Is Nothing
        objReader.Close()

        For Each sLine In arrText
            Console.WriteLine(sLine)
        Next
        Console.ReadLine()
    End Sub

End Module

Pièges

Il existe plusieurs points sur lesquels vous devez être informé lorsque vous travaillez avec des entrées/sorties de fichier, dont notamment les points suivants :
  • Chaque fois que vous accédez à un fichier, il existe une possibilité que le fichier dans lequel vous voulez lire ou écrire ne se trouve pas dans le système ou qu'il soit en cours d'utilisation.
  • Dans cet exemple, le fichier entier est lu et mis en mémoire avant d'être traité. Vous pouvez être confronté à une situation où le fichier est trop volumineux pour être mis en mémoire. Vous pouvez également ne pas disposer des autorisations d'accès au fichier.
Chacune de ces situations entraîne la génération d'une exception. Il est toujours recommandé de fournir un bloc try...catch pour gérer ces difficultés courantes.

RÉFÉRENCES

Pour plus d'informations, visitez le site Web, Didacticiels QuickStart Microsoft .NET SDK (en anglais) :
http://www.gotdotnet.com/quickstart
Pour plus d'informations générales sur Visual Basic .Net, vous pouvez vous référer au groupe de discussions (Newsgroup) suivant :
microsoft.public.fr.dotnet.vb

Propriétés

Numéro d'article: 302309 - Dernière mise à jour: mardi 29 avril 2003 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic .NET 2002 Initiation
Mots-clés : 
kbhowto kbhowtomaster kbnokeyword KB302309
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com