Exemplarische Vorgehensweise: Bearbeiten von Dateien mit .NET Framework-Methoden (Visual Basic)

In dieser exemplarischen Vorgehensweise wird gezeigt, wie man eine Datei mithilfe der Klasse StreamReader öffnet und liest, wie man überprüft, ob auf eine Datei zugegriffen wird, wie man innerhalb einer Datei, die mit einer Instanz der Klasse StreamReader gelesen wird, nach einer Zeichenfolge sucht und wie man mithilfe der Klasse StreamWriter in eine Datei schreibt.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

Erstellen der Anwendung

Starten Sie Visual Studio und beginnen Sie das Projekt durch Erstellen eines Formulars, mit dem ein Benutzer in die festgelegte Datei schreiben kann.

So erstellen Sie das Projekt

  1. Wählen Sie im Menü Datei die Option Neues Projekt aus.

  2. Klicken Sie im Bereich Neues Projekt auf Windows-Anwendung.

  3. Geben Sie im Feld Name die Bezeichnung MyDiary ein, und klicken Sie auf OK.

    Visual Studio fügt das Projekt in den Projektmappen-Explorer ein. Der Windows Forms-Designer wird geöffnet.

  4. Fügen Sie die Steuerelemente aus der folgenden Tabelle zum Formular hinzu, und legen Sie die entsprechenden Werte für die Eigenschaften fest.

Objekt Eigenschaften Wert
Button Name

Text
Submit

Eintrag eintragen
Button Name

Text
Clear

Eintrag löschen
TextBox Name

Text

Multiline
Entry

Bitte machen Sie eine Eingabe.

False

In eine Datei schreiben

Verwenden Sie die Klasse StreamWriter, um die Möglichkeit hinzuzufügen, über die Anwendung in eine Datei zu schreiben. StreamWriter ist für die Ausgabe von Zeichen in eine bestimmte Codierung vorgesehen, wohingegen die Klasse Stream für die Ein- und Ausgabe von Bytes vorgesehen ist. Verwenden Sie StreamWriter zum Schreiben von Informationszeilen in eine Standardtextdatei. Weitere Informationen zur Klasse StreamWriter finden Sie unter StreamWriter.

Funktionen zum Schreiben hinzufügen

  1. Wählen Sie im Menü Ansicht Code aus, um den Code-Editor zu öffnen.

  2. Da die Anwendung auf den Namespace System.IO verweist, fügen Sie die folgenden Anweisungen ganz am Anfang Ihres Code hinzu, vor der Klassendeklaration für das Formular, die mit Public Class Form1 beginnt.

    Imports System
    Imports System.IO
    

    Bevor Sie in eine Datei schreiben können, müssen Sie eine Instanz der Klasse StreamWriter erstellen.

  3. Wählen Sie im Menü Ansicht Designer aus, um zum Windows Forms-Designer zurückzukehren. Doppelklicken Sie auf die Schaltfläche Submit, um einen Click-Ereignishandler für die Schaltfläche zu erstellen, und fügen Sie anschließend den folgenden Code hinzu.

    Dim fw As StreamWriter
    
Hinweis

Die Integrated Development Environment (Integrierte Entwicklungsumgebung, IDE) von Visual Studio kehrt zum Code-Editor zurück und platziert die Einfügemarke an der Stelle im Ereignishandler, an der Sie Code hinzufügen sollen.

  1. Verwenden Sie zum Schreiben in die Datei die Methode Write der Klasse StreamWriter. Fügen Sie direkt hinter Dim fw As StreamWriter folgenden Code ein. Sie müssen sich keine Gedanken darüber machen, dass eine Ausnahme ausgelöst wird, wenn die Datei nicht gefunden wird, da diese erstellt wird, wenn sie noch nicht vorhanden ist.

    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. Stellen Sie sicher, dass der Benutzer keine leeren Einträge eintragen kann, indem Sie direkt hinter Dim ReadString As String folgenden Code einfügen.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Da es sich hier um einen Kalender handelt, möchte der Benutzer vermutlich jedem Eintrag ein Datum zuweisen. Fügen Sie folgenden Code nach fw = New StreamWriter("C:\MyDiary.txt", True) ein, um die Variable Today auf das aktuelle Datum einzustellen.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Fügen Sie anschließend Code zum Leeren von TextBox an. Fügen Sie dem Click-Ereignis der Schaltfläche Clear folgenden Code hinzu:

    Entry.Text = ""
    

Hinzufügen von Anzeigefunktionen zum Kalender

In diesem Abschnitt fügen Sie eine Funktion hinzu, mit der der letzte Eintrag in TextBox DisplayEntry angezeigt wird. Sie können auch ein ComboBox-Objekt hinzufügen, das verschiedene Einträge anzeigt und dem Benutzer die Auswahl eines Eintrags zur Anzeige in TextBox DisplayEntry ermöglicht. Eine Instanz der Klasse StreamReader liest aus MyDiary.txt. Wie die Klasse StreamWriter ist StreamReader für die Verwendung mit Textdateien vorgesehen.

Fügen Sie in diesem Abschnitt der exemplarischen Vorgehensweise die Steuerelemente aus der folgenden Tabelle zum Formular hinzu, und legen Sie die entsprechenden Werte für die Eigenschaften fest.

Steuerelement Eigenschaften Werte
TextBox Name

Visible

Size

Multiline
DisplayEntry

False

120,60

True
Button Name

Text
Display

Anzeigen
Button Name

Text
GetEntries

Einträge abrufen
ComboBox Name

Text

Aktiviert
PickEntries

Eintrag auswählen

False

Auffüllen des Kombinationsfelds

  1. Das ComboBox-Objekt PickEntries wird zum Anzeigen von Datumsangaben verwendet, an denen ein Benutzer die einzelnen Einträge übermittelt hat. Dadurch kann der Benutzer einen Eintrag von einem bestimmten Datum auswählen. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche GetEntries, und fügen Sie ihm den folgenden Code hinzu:

    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. Drücken Sie zum Testen des Codes F5, um die Anwendung zu kompilieren, und klicken Sie dann auf Einträge abrufen. Klicken Sie auf den Dropdownpfeil in ComboBox, um die Datumsangaben für die Einträge anzuzeigen.

Auswählen und Anzeigen einzelner Einträge

  1. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche Display, und fügen Sie den folgenden Code hinzu:

    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. Drücken Sie zum Testen des Codes F5, um die Anwendung zu kompilieren, und machen Sie dann einen Eintrag. Klicken Sie auf Einträge abrufen, wählen Sie einen Eintrag aus ComboBox aus, und klicken Sie anschließend auf Anzeigen. Der Inhalt des ausgewählten Eintrags wird im TextBox DisplayEntry angezeigt.

Benutzern das Löschen oder Ändern von Einträgen erlauben

Abschließend können Sie verschiedene Funktionen mit aufnehmen, die es Benutzern erlauben, einen Eintrag mithilfe der Schaltflächen DeleteEntry und EditEntry zu ändern oder zu löschen. Beide Schaltflächen sind deaktiviert bis ein Eintrag angezeigt wird.

Fügen Sie die Steuerelemente aus der folgenden Tabelle zum Formular hinzu, und legen Sie die entsprechenden Werte für die Eigenschaften fest.

Steuerelement Eigenschaften Werte
Button Name

Text

Aktiviert
DeleteEntry

Eintrag löschen

False
Button Name

Text

Aktiviert
EditEntry

Edit Entry (Eintrag bearbeiten)

False
Button Name

Text

Aktiviert
SubmitEdit

Submit Edit (Änderung eintragen)

False

Löschen und Ändern von Eintragen aktivieren

  1. Fügen Sie dem Click-Ereignis der Schaltfläche Display nach DisplayEntry.Text = ReadString folgenden Code hinzu:

    DeleteEntry.enabled = True
    
  2. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche DeleteEntry, und fügen Sie den folgenden Code hinzu:

    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. Wenn ein Benutzer einen Eintrag anzeigt, wird die Schaltfläche EditEntry aktiviert. Fügen Sie dem Click-Ereignis der Schaltfläche Display nach DisplayEntry.Text = ReadString den folgenden Code hinzu:

    EditEntry.Enabled = True
    
  4. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche EditEntry, und fügen Sie den folgenden Code hinzu:

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche SubmitEdit, und fügen Sie den folgenden Code hinzu:

    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
    

Drücken Sie zum Testen des Codes F5, um die Anwendung zu kompilieren. Klicken Sie auf Einträge abrufen, wählen Sie einen Eintrag aus, und klicken Sie anschließend auf Anzeigen. Der Eintrag wird in TextBox DisplayEntry angezeigt. Klicken Sie auf Edit Entry (Eintrag bearbeiten). Der Eintrag wird in TextBox Entry angezeigt. Bearbeiten Sie den Eintrag in TextBox Entry, und klicken Sie auf Bearbeitung senden. Öffnen Sie die MyDiary.txt-Datei, um Ihre Korrekturen zu bestätigen. Wählen Sie jetzt einen Eintrag aus, und klicken Sie auf Eintrag löschen. Wenn Sie in MessageBox zur Bestätigung aufgefordert werden, klicken Sie auf OK. Schließen Sie die Anwendung und öffnen Sie MyDiary.txt, um den Löschvorgang zu bestätigen.

Siehe auch

StreamReader
StreamWriter
Exemplarische Vorgehensweisen