Share via


Procédure pas à pas : manipulation de fichiers à l'aide de méthodes du .NET Framework

Mise à jour : novembre 2007

Cette procédure pas à pas illustre comment ouvrir et lire un fichier à l'aide de la classe StreamReader, vérifier si une tentative d'accès à un fichier est en cours, rechercher une chaîne dans un fichier lu avec une instance de la classe StreamReader et écrire dans un fichier à l'aide de la classe StreamWriter.

Remarque :

Les options disponibles dans les boîtes de dialogue, ainsi que les noms et emplacements des commandes de menu que vous voyez, peuvent différer de ce qui est décrit dans l'aide selon vos paramètres actifs ou votre édition. Cette page d'aide concerne les Paramètres de développement généraux. Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Création de l'application

Démarrez Visual Studio et commencez le projet par la création d'un formulaire qui permettra à l'utilisateur d'écrire dans le fichier désigné.

Pour créer le projet

  1. Dans le menu Fichier, choisissez Nouveau projet.

  2. Dans le volet Nouveau projet, cliquez sur Application Windows.

  3. Dans la zone Nom, tapez MyDiary, puis cliquez sur OK.

    Visual Studio ajoute le projet à l'Explorateur de solutions et le Concepteur Windows Forms s'ouvre.

  4. Ajoutez au formulaire les contrôles du tableau suivant et définissez les valeurs de propriété correspondantes.

    Objet

    Propriétés

    Valeur

    Button

    Nom

    Text

    Submit

    Submit Entry

    Button

    Nom

    Texte

    Effacer

    Clear Entry

    TextBox

    Nom

    Texte

    Multiligne

    Entry

    Please enter something.

    False

Écriture dans le fichier

Pour ajouter la possibilité d'écrire dans un fichier via l'application, utilisez la classe StreamWriter. StreamWriter est conçu pour la sortie de caractères dans un codage particulier, tandis que la classe Stream est conçue pour l'entrée et la sortie d'octets. Utilisez StreamWriter pour écrire des lignes d'informations dans un fichier texte standard. Pour plus d'informations sur la classe StreamWriter, consultez StreamWriter, classe.

Pour ajouter une fonctionnalité d'écriture

  1. Dans le menu Affichage, choisissez Code pour ouvrir l'éditeur de code.

  2. Étant donné que l'application fait référence à l'espace de noms System.IO, ajoutez les instructions ci-après tout au début de votre code, avant la déclaration de classe du formulaire (Public Class Form1).

    Imports System
    Imports System.IO
    

    Avant d'écrire dans le fichier, vous devez créer une instance d'une classe StreamWriter.

  3. Dans le menu Affichage, choisissez Concepteur pour retourner au Concepteur Windows Forms. Double-cliquez sur le bouton Submit pour créer un gestionnaire d'événements Click pour ce bouton, puis ajoutez le code suivant

    Dim fw As StreamWriter
    
Remarque :

L'environnement de développement intégré (IDE, Integrated Development Environment) de Visual Studio revient à l'éditeur de code et positionne le point d'insertion dans le gestionnaire d'événements, à l'emplacement où vous devez ajouter le code.

  1. Pour écrire dans le fichier, utilisez la méthode Write de la classe StreamWriter. Ajoutez le code ci-dessous immédiatement après Dim fw As StreamWriter. La levée d'une exception en cas de fichier introuvable ne doit pas vous inquiéter, car le fichier est créé s'il n'existe pas.

    Dim ReadString As String
    Try
        'Pass the file path and name to the StreamWriter constructor.
        'Indicate that Append is True, so file will not be overwritten.
        fw = New StreamWriter("C:\MyDiary.txt", True)
        ReadString = Entry.Text
        fw.WriteLine(ReadString)
    Finally
        'Close the file.
        fw.Close()
    End Try
    
  2. Vérifiez que l'utilisateur ne peut soumettre aucune entrée vide en ajoutant le code suivant immédiatement après Dim ReadString As String.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Étant donné qu'il s'agit d'un agenda, l'utilisateur veut assigner une date à chaque entrée. Insérez le code suivant après fw = New StreamWriter("C:\MyDiary.txt", True) pour affecter la variable Today à la date actuelle.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Enfin, attachez du code pour effacer la TextBox. Ajoutez le code suivant à l'événement Click du bouton Clear.

    Entry.Text = ""
    

Ajout de fonctionnalités d'affichage à l'agenda

Dans cette section, vous ajoutez une fonctionnalité qui affiche la dernière entrée dans la TextBoxDisplayEntry. Vous pouvez également ajouter un ComboBox qui présente les diverses entrées que l'utilisateur peut sélectionner pour les afficher dans la TextBoxDisplayEntry. Une instance de la classe StreamReader lit MyDiary.txt. Comme la classe StreamWriter, StreamReader est conçu pour être utilisé avec les fichiers texte.

Pour cette section de la procédure pas à pas, ajoutez au formulaire les contrôles du tableau suivant et définissez les valeurs de propriété correspondantes.

Contrôle

Propriétés

Valeurs

TextBox

Nom

Visible

Taille

Multiligne

DisplayEntry

False

120,60

True

Button

Nom

Texte

Affichage

Affichage

Button

Nom

Texte

GetEntries

Get Entries

ComboBox

Nom

Texte

Enabled

PickEntries

Select an Entry

False

Pour remplir la zone de liste déroulante

  1. La ComboBoxPickEntries permet d'afficher les dates auxquelles un utilisateur soumet une entrée. Par conséquent, celui-ci peut sélectionner une entrée associée à une date déterminée. Créez un gestionnaire d'événements Click pour le bouton GetEntries et ajoutez le code suivant.

    Dim fr As StreamReader
    Dim FileString As String
    FileString = ""
    Try
        fr = New System.IO.StreamReader("C:\MyDiary.txt")
        PickEntries.Items.Clear()
        PickEntries.Enabled = True
        Do
            FileString = fr.ReadLine
            If IsDate(FileString) Then
                PickEntries.Items.Add(FileString)
            End If
        Loop Until (FileString Is Nothing)
    Finally
        If fr IsNot Nothing Then
            fr.Close()
        End If
    End Try
    PickEntries.Enabled = True
    
  2. Pour tester votre code, appuyez sur F5 pour compiler l'application et cliquez sur Get Entries. Cliquez sur la flèche de déroulement dans la ComboBox pour afficher les dates des entrées.

Pour sélectionner et afficher des entrées individuelles

  1. Créez un gestionnaire d'événements Click pour le bouton Display et ajoutez le code suivant.

    Dim fr As StreamReader
    Dim ReadString As String
    'Make sure ReadString begins empty.
    ReadString = ""
    Dim FileString As String
    fr = New StreamReader("C:\MyDiary.txt")
    'If no entry has been selected, show the whole file.
    If PickEntries.Enabled = False Or PickEntries.SelectedText Is Nothing Then
        Do
            'Read a line from the file into FileString.
            FileString = fr.ReadLine
            'add it to ReadString
            ReadString = ReadString & ControlChars.CrLf & FileString
        Loop Until (FileString = Nothing)
    Else
        'An entry has been selected, find the line that matches.
        Do
    
            FileString = fr.ReadLine
        Loop Until FileString = CStr(PickEntries.SelectedItem)
        FileString = CStr(PickEntries.SelectedItem) & ControlChars.CrLf
        ReadString = FileString & fr.ReadLine
    
        'Read from the file until EOF or another Date is found.
        Do Until ((fr.Peek < 0) Or (IsDate(fr.ReadLine)))
            ReadString = ReadString & fr.ReadLine
        Loop
    End If
    fr.Close()
    DisplayEntry.Visible = True
    DisplayEntry.Text = ReadString
    
  2. Pour tester votre code, appuyez sur F5 pour compiler l'application et soumettez une entrée. Cliquez sur Get Entries, sélectionnez une entrée dans la ComboBox, puis cliquez sur Display. Le contenu de l'entrée sélectionnée s'affiche dans la TextBoxDisplayEntry.

Autorisation aux utilisateurs de supprimer ou de modifier des entrées

Enfin, vous pouvez inclure des fonctionnalités supplémentaires qui permettent aux utilisateurs de supprimer ou de modifier une entrée à l'aide des boutons DeleteEntry et EditEntry. Ces deux boutons restent désactivés si aucune entrée n'est affichée.

Ajoutez au formulaire les contrôles du tableau suivant et définissez les valeurs de propriété correspondantes.

Contrôle

Propriétés

Valeurs

Button

Nom

Texte

Enabled

DeleteEntry

Delete Entry

False

Button

Nom

Texte

Enabled

EditEntry

Edit Entry

False

Button

Nom

Texte

Enabled

SubmitEdit

Submit Edit

False

Pour activer la suppression et la modification d'entrées

  1. Ajoutez le code suivant à l'événement Click du bouton Display après DisplayEntry.Text = ReadString.

    DeleteEntry.enabled = True
    
  2. Créez un gestionnaire d'événements Click pour le bouton DeleteEntry et ajoutez le code suivant.

    Dim fr As StreamReader
    Dim ReadString As String
    Dim WriteString As String
    Dim ConfirmDelete As MsgBoxResult
    fr = New StreamReader("C:\MyDiary.txt")
    ReadString = fr.ReadLine
    ' Read through the textfile
    Do Until (fr.Peek < 0)
        ReadString = ReadString & vbCrLf & fr.ReadLine
    Loop
    WriteString = Replace(ReadString, DisplayEntry.Text, "")
    fr.Close()
    ' Check to make sure the user wishes to delete the entry
    ConfirmDelete = MsgBox("Do you really wish to delete this entry?", _
      MsgBoxStyle.OKCancel)
    If ConfirmDelete = MsgBoxResult.OK Then
        File.Delete("C:\MyDiary.txt")
        Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt")
        fw.WriteLine(WriteString)
        fw.Close()
        ' Reset controls on the form
        DisplayEntry.Text = ""
        PickEntries.Text = ""
        PickEntries.Items.Clear()
        PickEntries.Enabled = False
        DeleteEntry.Enabled = False
    End If
    
  3. Lorsqu'un utilisateur affiche une entrée, le bouton EditEntry devient disponible. Ajoutez le code suivant à l'événement Click du bouton Display après DisplayEntry.Text = ReadString.

    EditEntry.Enabled = True
    
  4. Créez un gestionnaire d'événements Click pour le bouton EditEntry et ajoutez le code suivant.

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Créez un gestionnaire d'événements Click pour le bouton SubmitEdit et ajoutez le code suivant

    Dim fr As StreamReader
    Dim ReadString As String
    Dim WriteString As String
    If Entry.Text = "" Then
        MsgBox("Use Delete to Delete an Entry")
        Return
    End If
    fr = New StreamReader("C:\MyDiary.txt")
    ReadString = fr.ReadLine
    Do Until (fr.Peek < 0)
        ReadString = ReadString & vbCrLf & fr.ReadLine
    Loop
    WriteString = Replace(ReadString, DisplayEntry.Text, Entry.Text)
    fr.Close()
    File.Delete("C:\MyDiary.txt")
    Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt")
    fw.WriteLine(WriteString)
    fw.Close()
    DisplayEntry.Text = Entry.Text
    Entry.Text = ""
    EditEntry.Enabled = False
    SubmitEdit.Enabled = False
    

Pour tester votre code, appuyez sur F5 pour compiler l'application. Cliquez sur Get Entries, sélectionnez une entrée, puis cliquez sur Display. L'entrée s'affiche dans la TextBoxDisplayEntry. Cliquez sur Edit Entry. L'entrée s'affiche dans la TextBoxEntry. Modifiez l'entrée dans TextBoxEntry, puis cliquez sur Submit Edit. Ouvrez le fichier MyDiary.txt pour confirmer vos corrections. À présent, sélectionnez une entrée et cliquez sur Delete Entry. Lorsque le message MessageBox vous demande de confirmer l'opération, cliquez sur OK. Fermez l'application et ouvrez MyDiary.txt pour confirmer la suppression.

Voir aussi

Référence

StreamReader

StreamWriter

Autres ressources

Procédures pas à pas relatives au langage Visual Basic