Overzicht: Bestanden bewerken met behulp van .NET Framework-methoden (Visual Basic)
Deze procedure laat zien hoe u een bestand opent en leest met behulp van de StreamReader klasse, controleert of een bestand wordt geopend, zoekt naar een tekenreeks in een bestand dat is gelezen met een exemplaar van de StreamReader klasse en schrijft naar een bestand met behulp van de StreamWriter klasse.
Notitie
Mogelijk worden op uw computer verschillende namen of locaties weergegeven voor sommige elementen van de Visual Studio-gebruikersinterface in de volgende instructies. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie Personalizing the IDE (Personalizing the IDE) voor meer informatie.
De toepassing maken
Start Visual Studio en begin het project door een formulier te maken dat de gebruiker kan gebruiken om naar het aangewezen bestand te schrijven.
Het project maken
Selecteer Nieuw project in het menu Bestand.
Klik in het deelvenster Nieuw project op Windows-toepassing.
Typ
MyDiary
in het vak Naam en klik op OK.Visual Studio voegt het project toe aan Solution Explorer en de Windows Forms Designer wordt geopend.
Voeg de besturingselementen in de volgende tabel toe aan het formulier en stel de bijbehorende waarden in voor hun eigenschappen.
Object | Eigenschappen | Value |
---|---|---|
Button | Naam Text |
Submit Item verzenden |
Button | Naam Text |
Clear Item wissen |
TextBox | Naam Text Multiline |
Entry Voer iets in. False |
Schrijven naar het bestand
Als u de mogelijkheid wilt toevoegen om via de toepassing naar een bestand te schrijven, gebruikt u de StreamWriter klasse. StreamWriter is ontworpen voor tekenuitvoer in een bepaalde codering, terwijl de Stream klasse is ontworpen voor byte-invoer en -uitvoer. Gebruiken StreamWriter voor het schrijven van regels met informatie naar een standaardtekstbestand. Zie voor meer informatie over de StreamWriter klas StreamWriter.
Schrijffunctionaliteit toevoegen
Kies Code in het menu Beeld om de Code-editor te openen.
Omdat de toepassing verwijst naar de System.IO naamruimte, voegt u de volgende instructies toe aan het begin van uw code, voordat de klassedeclaratie voor het formulier begint
Public Class Form1
.Imports System.IO
Voordat u naar het bestand schrijft, moet u een exemplaar van een StreamWriter klasse maken.
Kies Designer in het menu Beeld om terug te keren naar de Windows Forms Designer. Dubbelklik op de
Submit
knop om een Click gebeurtenis-handler voor de knop te maken en voeg de volgende code toe.Dim fw As StreamWriter
Notitie
De Visual Studio Integrated Development Environment (IDE) keert terug naar de Code-editor en plaatst de invoegpositie in de gebeurtenishandler waar u de code moet toevoegen.
Als u naar het bestand wilt schrijven, gebruikt u de Write methode van de StreamWriter klasse. Voeg de volgende code direct na
Dim fw As StreamWriter
toe. U hoeft zich geen zorgen te maken dat er een uitzondering wordt gegenereerd als het bestand niet wordt gevonden, omdat het wordt gemaakt als het nog niet bestaat.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
Zorg ervoor dat de gebruiker geen lege vermelding kan indienen door de volgende code direct na
Dim ReadString As String
toe te voegen.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If
Omdat dit een dagboek is, wil de gebruiker een datum toewijzen aan elk item. Voeg de volgende code in nadat
fw = New StreamWriter("C:\MyDiary.txt", True)
u de variabeleToday
wilt instellen op de huidige datum.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Voeg ten slotte code toe om de TextBox. Voeg de volgende code toe aan de gebeurtenis van Click de
Clear
knop.Entry.Text = ""
Weergavefuncties toevoegen aan het dagboek
In deze sectie voegt u een functie toe waarmee de meest recente vermelding in de DisplayEntry
TextBoxsectie wordt weergegeven. U kunt ook een ComboBox item toevoegen waarin verschillende vermeldingen worden weergegeven en waaruit een gebruiker een vermelding kan selecteren die moet worden weergegeven in de DisplayEntry
TextBox. Een exemplaar van de StreamReader klasse leest van MyDiary.txt
. Net als de StreamWriter klasse is StreamReader het bedoeld voor gebruik met tekstbestanden.
Voor deze sectie van het overzicht voegt u de besturingselementen in de volgende tabel toe aan het formulier en stelt u de bijbehorende waarden voor de bijbehorende eigenschappen in.
Control | Eigenschappen | Waarden |
---|---|---|
TextBox | Naam Visible Grootte Multiline |
DisplayEntry False 120,60 True |
Button | Naam Text |
Display Weergeven |
Button | Naam Text |
GetEntries Vermeldingen ophalen |
ComboBox | Naam Text Ingeschakeld |
PickEntries Een vermelding selecteren False |
De keuzelijst met invoervak vullen
Deze
PickEntries
ComboBox wordt gebruikt om de datums weer te geven waarop een gebruiker elke vermelding indient, zodat de gebruiker een vermelding van een specifieke datum kan selecteren. Maak een Click gebeurtenis-handler aan deGetEntries
knop en voeg de volgende code toe.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
Als u de code wilt testen, drukt u op F5 om de toepassing te compileren en klikt u vervolgens op Vermeldingen ophalen. Klik op de vervolgkeuzepijl in de ComboBox vervolgkeuzelijst om de invoerdatums weer te geven.
Afzonderlijke vermeldingen kiezen en weergeven
Maak een Click gebeurtenis-handler voor de
Display
knop en voeg de volgende code toe.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
Als u de code wilt testen, drukt u op F5 om de toepassing te compileren en dient u vervolgens een vermelding in. Klik op Vermeldingen ophalen, selecteer een vermelding in de ComboBoxen klik vervolgens op Weergeven. De inhoud van de geselecteerde vermelding wordt weergegeven in de
DisplayEntry
TextBox.
Gebruikers in staat stellen vermeldingen te verwijderen of te wijzigen
Ten slotte kunt u extra functionaliteit toevoegen waarmee gebruikers een vermelding kunnen verwijderen of wijzigen met behulp van DeleteEntry
knoppen en EditEntry
knoppen. Beide knoppen blijven uitgeschakeld, tenzij er een vermelding wordt weergegeven.
Voeg de besturingselementen in de volgende tabel toe aan het formulier en stel de bijbehorende waarden in voor hun eigenschappen.
Control | Eigenschappen | Waarden |
---|---|---|
Button | Naam Text Ingeschakeld |
DeleteEntry Item verwijderen False |
Button | Naam Text Ingeschakeld |
EditEntry Item bewerken False |
Button | Naam Text Ingeschakeld |
SubmitEdit Bewerken verzenden False |
Verwijderen en wijzigen van vermeldingen inschakelen
Voeg de volgende code toe aan de gebeurtenis van Click de
Display
knop, naDisplayEntry.Text = ReadString
.DeleteEntry.enabled = True
Maak een Click gebeurtenis-handler voor de
DeleteEntry
knop en voeg de volgende code toe.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
Wanneer een gebruiker een vermelding weergeeft, wordt de
EditEntry
knop ingeschakeld. Voeg de volgende code toe aan de Click gebeurtenis van deDisplay
knop naDisplayEntry.Text = ReadString
.EditEntry.Enabled = True
Maak een Click gebeurtenis-handler voor de
EditEntry
knop en voeg de volgende code toe.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Maak een Click gebeurtenis-handler voor de
SubmitEdit
knop en voeg de volgende code toeDim 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
Druk op F5 om de code te testen om de toepassing te compileren. Klik op Vermeldingen ophalen, selecteer een vermelding en klik vervolgens op Weergeven. De vermelding wordt weergegeven in de DisplayEntry
TextBox. Klik op Item bewerken. De vermelding wordt weergegeven in de Entry
TextBox. Bewerk de vermelding in het Entry
TextBox item en klik op Bewerken verzenden. Open het MyDiary.txt
bestand om uw correctie te bevestigen. Selecteer nu een vermelding en klik op Item verwijderen. Wanneer de bevestiging van de MessageBox aanvragen is bevestigd, klikt u op OK. Sluit de toepassing en open MyDiary.txt
om het verwijderen te bevestigen.