Freigeben über


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

In dieser exemplarischen Vorgehensweise wird erläutert, wie Sie mithilfe der StreamReader-Klasse Dateien öffnen und lesen, mit einer Instanz der StreamReader-Klasse in eingelesenen Dateien nach einer Zeichenfolge suchen und mithilfe der StreamWriter-Klasse in Dateien schreiben.

Tipp

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Erstellen der Anwendung

Starten Sie Visual Studio, und beginnen Sie mit dem Projekt, indem Sie ein Formular erstellen, das der Benutzer zum Schreiben in die vorgesehene Datei verwenden 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.

    Das Projekt wird von Visual Studio dem Projektmappen-Explorer hinzugefügt, und der Windows Forms-Designer wird geöffnet.

  4. Fügen Sie dem Formular die in der folgenden Tabelle genannten Steuerelemente hinzu, und legen Sie deren Eigenschaften wie beschrieben fest.

Objekt

Eigenschaften

Value

Button

Name

Text

Submit

Eintrag übermitteln

Button

Name

Text

Clear

Eintrag leeren

TextBox

Name

Text

Multiline

Eintrag

Bitte geben Sie Text ein.

False

Schreiben in die Datei

Verwenden Sie die StreamWriter-Klasse, um die Möglichkeit hinzuzufügen, über die Anwendung in eine Datei zu schreiben. Mit StreamWriter werden Zeichen in einer bestimmten Codierung ausgegeben. Die Stream-Klasse wird dagegen zur Eingabe und Ausgabe von Bytes verwendet. Verwenden Sie StreamWriter, um Zeilen mit Informationen in eine Standardtextdatei zu schreiben. Weitere Informationen zur StreamWriter-Klasse finden Sie unter StreamWriter.

So fügen Sie die Funktionalität für das Schreiben hinzu

  1. Klicken Sie im Menü Ansicht auf Code, um den Code-Editor zu öffnen.

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

    Imports System
    Imports System.IO
    

    Vor dem Schreiben in die Datei müssen Sie eine Instanz einer StreamWriter-Klasse erstellen.

  3. Klicken Sie im Menü Ansicht auf Designer, um zum Windows Forms-Designer zurückzuwechseln. Doppelklicken Sie auf die Schaltfläche Submit, um einen Click-Ereignishandler für die Schaltfläche zu erstellen, und fügen Sie dann den folgenden Code hinzu.

    Dim fw As StreamWriter
    

Tipp

Die integrierte Entwicklungsumgebung (IDE) von Visual Studio wechselt zum Code-Editor zurück und positioniert die Einfügemarke im Event-Handler, in dem der Code hinzugefügt werden soll.

  1. Verwenden Sie zum Schreiben der Datei die Write-Methode der StreamWriter-Klasse. Fügen Sie folgenden Code direkt nach Dim fw As StreamWriter ein. Wenn die Datei nicht gefunden wird, wird keine Ausnahme ausgelöst, sondern die Datei wird erstellt.

    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. Um sicherzustellen, dass der Benutzer keinen leeren Eintrag übermitteln kann, fügen Sie folgenden Code direkt nach Dim ReadString As String ein.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Da es sich hier um ein Tagebuch handelt, will der Benutzer wahrscheinlich jeden Eintrag mit einem Datum versehen. Fügen Sie nach fw = New StreamWriter("C:\MyDiary.txt", True) folgenden Code ein, um die Variable Today auf das aktuelle Datum festzulegen.

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

    Entry.Text = ""
    

Hinzufügen von Anzeigefeatures zum Tagebuch

In diesem Abschnitt fügen Sie ein Feature hinzu, mit dem der letzte Eintrag in der DisplayEntry TextBox angezeigt wird. Sie können auch eine ComboBox hinzufügen, die mehrere Einträge anzeigt, und in der der Benutzer einen Eintrag für die Anzeige in der DisplayEntry TextBox auswählen kann. Eine Instanz der StreamReader-Klasse liest aus MyDiary.txt. Ebenso wie die StreamWriter-Klasse ist StreamReader für die Verwendung mit Textdateien vorgesehen.

In diesem Abschnitt der exemplarischen Vorgehensweise fügen Sie dem Formular die in der folgenden Tabelle genannten Steuerelemente hinzu und legen deren Eigenschaften wie beschrieben fest.

Steuerelement

Eigenschaften

Werte

TextBox

Name

Visible

Größe

Multiline

DisplayEntry

False

120,60

True

Button

Name

Text

Anzeige

Anzeige

Button

Name

Text

GetEntries

Einträge abrufen

ComboBox

Name

Text

Aktiviert

PickEntries

Eintrag auswählen

False

So füllen Sie das Kombinationsfeld mit Daten

  1. In der PickEntries ComboBox werden die Tage angezeigt, an denen die einzelnen Einträge übermittelt wurden, sodass ein Eintrag mit einem bestimmten Datum ausgewählt werden kann. Erstellen Sie einen Click-Ereignishandler für die GetEntries-Schaltfläche, und fügen Sie 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. Testen Sie den Code, indem Sie F5 drücken, um die Anwendung zu kompilieren, und klicken Sie dann auf Einträge abrufen. Klicken Sie auf den Abwärtspfeil in der ComboBox, um die Tage mit den einzelnen Einträgen anzuzeigen.

So wählen Sie einzelne Einträge aus und zeigen sie an

  1. Erstellen Sie einen Click-Ereignishandler für die Display-Schaltfläche, 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. Testen Sie den Code, indem Sie F5 drücken, um die Anwendung zu kompilieren, und übermitteln Sie dann einen Eintrag. Klicken Sie auf Einträge abrufen, wählen Sie in der ComboBox einen Eintrag aus, und klicken Sie dann auf Anzeigen. Der Inhalt des ausgewählten Eintrags wird in der DisplayEntry TextBox angezeigt.

Benutzern die Möglichkeit zum Bearbeiten und Löschen von Einträgen geben

Sie können zusätzliche Features zum Bearbeiten und Löschen von Einträgen mit einer EditEntry-Schaltfläche und einer DeleteEntry-Schaltfläche integrieren. Beide Schaltflächen werden erst aktiviert, wenn ein Eintrag angezeigt wird.

Fügen Sie dem Formular die in der folgenden Tabelle genannten Steuerelemente hinzu, und legen Sie deren Eigenschaften wie beschrieben fest.

Steuerelement

Eigenschaften

Werte

Button

Name

Text

Aktiviert

DeleteEntry

Eintrag löschen

False

Button

Name

Text

Aktiviert

EditEntry

Eintrag bearbeiten

False

Button

Name

Text

Aktiviert

SubmitEdit

Änderung übermitteln

False

So ermöglichen Sie das Löschen und Bearbeiten von Einträgen

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

    DeleteEntry.enabled = True
    
  2. Erstellen Sie einen Click-Ereignishandler für die DeleteEntry-Schaltfläche, 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 EditEntry-Schaltfläche aktiviert. Fügen Sie dem Click-Ereignis der Display-Schaltfläche nach DisplayEntry.Text = ReadString folgenden Code hinzu.

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

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Erstellen Sie einen Click-Ereignishandler für die SubmitEdit-Schaltfläche, 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
    

Testen Sie den Code, indem Sie F5 drücken, um die Anwendung zu kompilieren. Klicken Sie auf Einträge abrufen, wählen Sie einen Eintrag aus, und klicken Sie dann auf Anzeigen. Der Eintrag wird in der DisplayEntry TextBox angezeigt. Klicken Sie auf Eintrag bearbeiten. Der Eintrag wird in der Entry TextBox angezeigt. Bearbeiten Sie den Eintrag in der Entry TextBox, und klicken Sie auf Bearbeitung senden. Öffnen Sie die Datei MyDiary.txt, um die Änderung zu bestätigen. Wählen Sie jetzt einen Eintrag aus, und klicken Sie auf Eintrag löschen. Klicken Sie bei entsprechender Aufforderung durch die MessageBox auf OK, um den Löschvorgang zu bestätigen. Schließen Sie die Anwendung, und öffnen Sie die Datei MyDiary.txt, um die Löschung zu bestätigen.

Siehe auch

Referenz

StreamReader

StreamWriter

Weitere Ressourcen

Exemplarische Vorgehensweisen für Visual Basic