Procédure pas à pas : manipulation de fichiers à l'aide de méthodes du .NET Framework (Visual Basic)
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.
Notes
Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnalisation de l’IDE.
Création de l’application
Démarrez Visual Studio et commencez le projet par la création d’un formulaire qui permet à l’utilisateur d’écrire dans le fichier désigné.
Pour créer le projet
Dans le menu Fichier, sélectionnez Nouveau projet.
Dans le volet Nouveau projet, cliquez sur Application Windows.
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.
Ajoutez au formulaire les contrôles répertoriés dans le tableau ci-après et définissez les valeurs de propriété correspondantes.
Object | Propriétés | Valeur |
---|---|---|
Button | Nom Texte |
Submit Envoyer l’entrée |
Button | Nom Texte |
Clear Effacer l’entrée |
TextBox | Nom Texte Multiline |
Entry Saisissez quelque chose. False |
Écriture dans le fichier
Pour permettre l’écriture dans un fichier via l’application, utilisez la classe StreamWriter. La classe StreamWriter est conçue pour la sortie de caractères dans un encodage 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.
Pour ajouter une fonctionnalité d’écriture
Dans le menu Affichage, choisissez Code pour ouvrir l’éditeur de code.
Étant donné que l’application 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.IO
Avant d’écrire dans le fichier, vous devez créer une instance d’une classe StreamWriter.
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
Notes
L’environnement de développement intégré (IDE, Integrated Development Environment) 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.
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
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
Comme 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 date actuelle à la variableToday
.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Pour finir, attachez le code pour effacer 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 le contrôle DisplayEntry
TextBox. Vous pouvez également ajouter un ComboBox qui affiche différentes entrées et à partir duquel un utilisateur peut sélectionner une entrée à afficher dans le DisplayEntry
TextBox. Une instance de la classe StreamReader lit à partir de MyDiary.txt
. Comme la classe StreamWriter, StreamReader est destiné à être utilisé avec des fichiers texte.
Pour cette section de la procédure pas à pas, ajoutez au formulaire les contrôles répertoriés dans le tableau ci-après et définissez les valeurs de propriété correspondantes.
Control | Propriétés | Valeurs |
---|---|---|
TextBox | Nom Visible Taille Multiline |
DisplayEntry False 120,60 True |
Button | Nom Texte |
Display Affichage |
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
Le contrôle
PickEntries
ComboBox permet d’afficher les dates auxquelles un utilisateur soumet une entrée. Ainsi, celui-ci peut sélectionner une entrée associée à une date déterminée. Créez un gestionnaire d’événements Click au boutonGetEntries
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
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 le ComboBox pour afficher les dates d’entrée.
Pour sélectionner et afficher des entrées individuelles
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
Pour tester votre code, appuyez sur F5 pour compiler l’application, puis soumettez une entrée. Cliquez sur Obtenir des entrées, sélectionnez une entrée dans le ComboBox, puis cliquez sur Afficher. Le contenu de l’entrée sélectionnée s’affiche dans le
DisplayEntry
TextBox.
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 répertoriés dans le tableau ci-après et définissez les valeurs de propriété correspondantes.
Control | 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 d’entrées
Ajoutez le code suivant à l’événement Click du bouton
Display
, aprèsDisplayEntry.Text = ReadString
.DeleteEntry.enabled = True
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
Quand un utilisateur affiche une entrée, le bouton
EditEntry
devient disponible. Ajoutez le code suivant à l’événement Click du boutonDisplay
aprèsDisplayEntry.Text = ReadString
.EditEntry.Enabled = True
Créez un gestionnaire d’événements Click pour le bouton
EditEntry
et ajoutez le code suivant.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
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 Obtenir des entrées, sélectionnez une entrée, puis cliquez sur Afficher. L’entrée s’affiche dans le DisplayEntry
TextBox. Cliquez sur Modifier l’entrée. L’entrée s’affiche dans le Entry
TextBox. Modifiez l’entrée dans le Entry
TextBox et cliquez sur Envoyer la modification. Ouvrez le fichier MyDiary.txt
pour confirmer vos corrections. À présent, sélectionnez une entrée et cliquez sur Supprimer l’entrée. Quand le MessageBox demande confirmation, cliquez sur OK. Fermez l’application et ouvrez MyDiary.txt
pour confirmer la suppression.