Delen via


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

  1. Selecteer Nieuw project in het menu Bestand.

  2. Klik in het deelvenster Nieuw project op Windows-toepassing.

  3. 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.

  4. 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

  1. Kies Code in het menu Beeld om de Code-editor te openen.

  2. 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.

  3. 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.

  1. 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 StreamWritertoe. 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
    
  2. Zorg ervoor dat de gebruiker geen lege vermelding kan indienen door de volgende code direct na Dim ReadString As Stringtoe te voegen.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. 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 variabele Today wilt instellen op de huidige datum.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. 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 DisplayEntryTextBoxsectie 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 DisplayEntryTextBox. 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

  1. Deze PickEntriesComboBox 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 de GetEntries 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
    
  2. 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

  1. 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
    
  2. 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 DisplayEntryTextBox.

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

  1. Voeg de volgende code toe aan de gebeurtenis van Click de Display knop, na DisplayEntry.Text = ReadString.

    DeleteEntry.enabled = True
    
  2. 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
    
  3. Wanneer een gebruiker een vermelding weergeeft, wordt de EditEntry knop ingeschakeld. Voeg de volgende code toe aan de Click gebeurtenis van de Display knop na DisplayEntry.Text = ReadString.

    EditEntry.Enabled = True
    
  4. Maak een Click gebeurtenis-handler voor de EditEntry knop en voeg de volgende code toe.

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Maak een Click gebeurtenis-handler voor de SubmitEdit knop en voeg de volgende code toe

    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
    

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 DisplayEntryTextBox. Klik op Item bewerken. De vermelding wordt weergegeven in de EntryTextBox. Bewerk de vermelding in het EntryTextBox 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.

Zie ook