Freigeben über


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

In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie Sie eine Datei mithilfe der StreamReader Klasse öffnen und lesen, überprüfen, ob auf eine Datei zugegriffen wird, nach einer Zeichenfolge in einer Datei suchen, die mit einer Instanz der StreamReader Klasse gelesen wird, und in eine Datei mit der StreamWriter Klasse schreiben.

Hinweis

Auf Ihrem Computer werden möglicherweise unterschiedliche Namen oder Speicherorte für einige der Visual Studio-Benutzeroberflächenelemente in den folgenden Anweisungen angezeigt. Die Visual Studio-Edition, über die Sie verfügen, und die Einstellungen, die Sie verwenden, bestimmen diese Elemente. Weitere Informationen finden Sie unter Personalisierung der IDE.

Erstellen der Anwendung

Starten Sie Visual Studio, und beginnen Sie das Projekt, indem Sie ein Formular erstellen, das der Benutzer zum Schreiben in die festgelegte 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' den Namen ein MyDiary , und klicken Sie auf 'OK'.

    Visual Studio fügt das Projekt dem Projektmappen-Explorer hinzu, und der Windows Forms-Designer wird geöffnet.

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

Objekt Eigenschaften Wert
Button Name

Text
Submit

Eintrag absenden
Button Name

Text
Clear

Eintrag löschen
TextBox Name

Text

Mehrzeile
Entry

Bitte geben Sie etwas ein.

False

In eine Datei schreiben

Um die Möglichkeit hinzuzufügen, über die Anwendung in eine Datei zu schreiben, verwenden Sie die StreamWriter Klasse. StreamWriter ist für die Zeichenausgabe in einer bestimmten Codierung konzipiert, während die Stream Klasse für Byteeingabe und -ausgabe ausgelegt ist. Verwenden Sie StreamWriter zum Schreiben von Informationszeilen in eine Standardtextdatei. Weitere Informationen zur StreamWriter Klasse finden Sie unter StreamWriter.

So fügen Sie Schreibfunktionen hinzu

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

  2. Da die Anwendung auf den System.IO Namespace verweist, fügen Sie am Anfang des Codes die folgenden Anweisungen hinzu, bevor die Klassendeklaration für das Formular beginnt Public Class Form1.

    Imports System.IO
    

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

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

    Dim fw As StreamWriter
    

Hinweis

Die integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio kehrt zum Code-Editor zurück und positioniert die Einfügemarke innerhalb des Ereignishandlers, in dem Sie den Code hinzufügen sollten.

  1. Verwenden Sie die Write Methode der StreamWriter Klasse, um in die Datei zu schreiben. Fügen Sie den folgenden Code direkt hinter Dim fw As StreamWriter. Sie müssen sich keine Sorgen machen, dass eine Ausnahme ausgelöst wird, wenn die Datei nicht gefunden wird, da sie 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 keinen leeren Eintrag übermitteln kann, indem Sie den folgenden Code direkt danach Dim ReadString As Stringhinzufügen.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Da es sich um ein Kalender handelt, möchte der Benutzer jedem Eintrag ein Datum zuweisen. Fügen Sie den folgenden Code nach fw = New StreamWriter("C:\MyDiary.txt", True) 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 schließlich Code hinzu, um den TextBox zu löschen. Fügen Sie dem Ereignis der Clear Schaltfläche Click den folgenden Code hinzu.

    Entry.Text = ""
    

Hinzufügen von Anzeigefeatures zum Kalender

In diesem Abschnitt fügen Sie ein Feature hinzu, das den neuesten Eintrag in der DisplayEntryTextBoxDatei anzeigt. Sie können auch ein ComboBox Element hinzufügen, das verschiedene Einträge anzeigt und aus dem ein Benutzer einen Eintrag auswählen kann, der im DisplayEntryTextBox Bereich angezeigt werden soll. Eine Instanz der StreamReader Klasse liest aus MyDiary.txt. Wie die StreamWriter Klasse StreamReader ist für die Verwendung mit Textdateien vorgesehen.

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

Steuerung Eigenschaften Werte
TextBox Name

Sichtbaren

Größe

Mehrzeile
DisplayEntry

False

120,60

True
Button Name

Text
Display

Anzeige
Button Name

Text
GetEntries

Einträge abrufen
ComboBox Name

Text

Aktiviert
PickEntries

Eintrag auswählen

False

Auffüllen des Kombinationsfelds

  1. Es PickEntriesComboBox wird verwendet, um die Datumsangaben anzuzeigen, an denen ein Benutzer jeden Eintrag übermittelt, damit der Benutzer einen Eintrag aus einem bestimmten Datum auswählen 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. Um den Code zu testen, drücken Sie F5, um die Anwendung zu kompilieren, und klicken Sie dann auf "Einträge abrufen". Klicken Sie auf den Dropdownpfeil im ComboBox, um die Eintragstermine anzuzeigen.

Um einzelne Einträge auszuwählen und anzuzeigen

  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. Um den Code zu testen, drücken Sie F5, um die Anwendung zu kompilieren, und übermitteln Sie dann einen Eintrag. Klicken Sie auf "Einträge abrufen", wählen Sie einen Eintrag aus dem ComboBoxEintrag aus, und klicken Sie dann auf "Anzeigen". Die Inhalte des ausgewählten Eintrags werden in der DisplayEntryTextBox angezeigt.

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

Schließlich können Sie zusätzliche Funktionen hinzufügen, mit denen Benutzer einen Eintrag mithilfe der Schaltflächen DeleteEntry und EditEntry löschen oder ändern können. Beide Schaltflächen bleiben deaktiviert, es sei denn, ein Eintrag wird angezeigt.

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

Steuerung Eigenschaften Werte
Button Name

Text

Aktiviert
DeleteEntry

Eintrag löschen

False
Button Name

Text

Aktiviert
EditEntry

Eintrag bearbeiten

False
Button Name

Text

Aktiviert
SubmitEdit

Bearbeiten übermitteln

False

So aktivieren Sie das Löschen und Ändern von Einträgen

  1. Fügen Sie den folgenden Code zum Ereignis Display der Click-Schaltfläche nach DisplayEntry.Text = ReadString 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 Schaltfläche Display nach DisplayEntry.Text = ReadString den 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 eines Click Ereignishandlers für die SubmitEdit Schaltfläche und Hinzufügen des folgenden Codes

    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 F5, um die Anwendung zu kompilieren und Ihren Code zu testen. Klicken Sie auf "Einträge abrufen", wählen Sie einen Eintrag aus, und klicken Sie dann auf "Anzeigen". Der Eintrag wird in DisplayEntryTextBox angezeigt. Klicken Sie auf "Eintrag bearbeiten". Der Eintrag wird in EntryTextBox angezeigt. Bearbeiten Sie den Eintrag im EntryTextBox Und klicken Sie auf "Bearbeiten senden". Öffnen Sie die MyDiary.txt Datei, um Ihre Korrektur zu bestätigen. Wählen Sie nun 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 MyDiary.txt Sie sie, um den Löschvorgang zu bestätigen.

Siehe auch