Partager via


Procédure pas à pas : manipulation de fichiers à l’aide de méthodes .NET Framework (Visual Basic)

Cette procédure pas à pas montre comment ouvrir et lire un fichier à l’aide de la StreamReader classe, vérifier si un fichier est accessible, rechercher une chaîne dans un fichier lu avec une instance de la StreamReader classe et écrire dans un fichier à l’aide de la StreamWriter classe.

Remarque

Votre ordinateur peut afficher différents noms ou emplacements pour certains des éléments de l’interface utilisateur Visual Studio dans les instructions suivantes. L’édition Visual Studio que vous avez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE.

Création de l’application

Démarrez Visual Studio et commencez le projet en créant un formulaire que l’utilisateur peut utiliser pour écrire dans le fichier désigné.

Pour créer le projet

  1. Dans le menu Fichier, sélectionnez Nouveau projet.

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

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

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

  4. Ajoutez les contrôles dans le tableau suivant au formulaire et définissez les valeurs correspondantes pour leurs propriétés.

Objet Propriétés Valeur
Button Nom

Texte
Submit

Entrée d’envoi
Button Nom

Texte
Clear

Effacer l’entrée
TextBox Nom

Texte

Multiligne
Entry

Entrez quelque chose.

False

Écriture dans le fichier

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

Pour ajouter des fonctionnalités 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 System.IO de noms, ajoutez les instructions suivantes au début de votre code, avant la déclaration de classe pour le formulaire, qui commence Public Class Form1.

    Imports System.IO
    

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

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

    Dim fw As StreamWriter
    

Remarque

L’environnement de développement intégré (IDE) Visual Studio retourne à l’Éditeur de code et positionne le point d’insertion dans le gestionnaire d’événements où vous devez ajouter le code.

  1. Pour écrire dans le fichier, utilisez la Write méthode de la StreamWriter classe. Ajoutez le code suivant directement après Dim fw As StreamWriter. Vous n’avez pas besoin de vous soucier qu’une exception sera levée si le fichier est introuvable, car il sera créé s’il n’existe pas déjà.

    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. Assurez-vous que l’utilisateur ne peut pas envoyer une entrée vide en ajoutant le code suivant directement 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 journal, l’utilisateur souhaite attribuer une date à chaque entrée. Insérez le code suivant après fw = New StreamWriter("C:\MyDiary.txt", True) pour définir la variable Today sur la date actuelle.

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

    Entry.Text = ""
    

Ajout de fonctionnalités d’affichage au journal

Dans cette section, vous ajoutez une fonctionnalité qui affiche la dernière entrée dans le DisplayEntryTextBox. Vous pouvez également ajouter un ComboBox qui affiche différentes entrées et à partir de laquelle un utilisateur peut sélectionner une entrée à afficher dans le DisplayEntryTextBox. Instance de la StreamReader classe lue à partir de MyDiary.txt. Comme la StreamWriter classe, StreamReader elle est destinée à être utilisée avec des fichiers texte.

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

Contrôle Propriétés Valeurs
TextBox Nom

visible

Taille

Multiligne
DisplayEntry

False

120,60

True
Button Nom

Texte
Display

Écran
Button Nom

Texte
GetEntries

Obtenir des entrées
ComboBox Nom

Texte

Activé
PickEntries

Sélectionner une entrée

False

Pour remplir la zone de liste déroulante

  1. Il PickEntriesComboBox est utilisé pour afficher les dates auxquelles un utilisateur envoie chaque entrée, afin que l’utilisateur puisse sélectionner une entrée à partir d’une date spécifique. Créez un gestionnaire d’événements Click sur le GetEntries bouton et ajoutez le code suivant.

    Dim fr As StreamReader = Nothing
    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, puis cliquez sur Obtenir des entrées. Cliquez sur la flèche déroulante dans la ComboBox liste déroulante pour afficher les dates d’entrée.

Pour choisir et afficher des entrées individuelles

  1. Créez un gestionnaire d’événements Click pour le Display bouton 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, puis envoyez une entrée. Cliquez sur Obtenir des entrées, sélectionnez une entrée à partir de l’écran ComboBox, puis cliquez sur Afficher. Le contenu de l’entrée sélectionnée apparaît dans le DisplayEntryTextBox.

Activation des utilisateurs pour supprimer ou modifier des entrées

Enfin, vous pouvez inclure des fonctionnalités supplémentaires permettant aux utilisateurs de supprimer ou de modifier une entrée à l’aide DeleteEntry et EditEntry aux boutons. Les deux boutons restent désactivés, sauf si une entrée est affichée.

Ajoutez les contrôles dans le tableau suivant au formulaire et définissez les valeurs correspondantes pour leurs propriétés.

Contrôle Propriétés Valeurs
Button Nom

Texte

Activé
DeleteEntry

Supprimer l’entrée

False
Button Nom

Texte

Activé
EditEntry

Modifier l’entrée

False
Button Nom

Texte

Activé
SubmitEdit

Envoyer la modification

False

Pour activer la suppression et la modification des entrées

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

    DeleteEntry.enabled = True
    
  2. Créez un gestionnaire d’événements Click pour le DeleteEntry bouton 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 EditEntry bouton devient activé. Ajoutez le code suivant à l’événement ClickDisplay du bouton après DisplayEntry.Text = ReadString.

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

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Créer un gestionnaire d’événements Click pour le SubmitEdit bouton et ajouter 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 Obtenir des entrées, sélectionnez une entrée, puis cliquez sur Afficher. L’entrée apparaît dans le DisplayEntryTextBox. Cliquez sur Modifier l’entrée. L’entrée apparaît dans le EntryTextBox. Modifiez l’entrée dans l’entrée EntryTextBox , puis cliquez sur Envoyer la modification. Ouvrez le MyDiary.txt fichier pour confirmer votre correction. Sélectionnez maintenant une entrée, puis cliquez sur Supprimer l’entrée. Lorsque les MessageBox demandes sont confirmées, cliquez sur OK. Fermez l’application et ouvrez-la MyDiary.txt pour confirmer la suppression.

Voir aussi