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
Wählen Sie im Menü Datei die Option Neues Projekt aus.
Klicken Sie im Bereich Neues Projekt auf Windows-Anwendung.
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.
Fügen Sie die Steuerelemente aus der folgenden Tabelle zum Formular hinzu, und legen Sie die entsprechenden Werte für die Eigenschaften fest.
Object | Eigenschaften | Wert |
---|---|---|
Button | Name Text |
Submit Eintrag eintragen |
Button | Name Text |
Clear Eintrag löschen |
TextBox | Name Text Mehrzeilig |
Entry Geben Sie etwas ein. 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
Wählen Sie im Menü AnsichtCode aus, um den Code-Editor zu öffnen.
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.IO
Bevor Sie in eine Datei schreiben können, müssen Sie eine Instanz der Klasse StreamWriter erstellen.
Wählen Sie im Menü AnsichtDesigner 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.
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
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
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 VariableToday
auf das aktuelle Datum einzustellen.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
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 TextBoxDisplayEntry
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 TextBoxDisplayEntry
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.
Control | Eigenschaften | Werte |
---|---|---|
TextBox | Name Visible Größe Mehrzeilig |
DisplayEntry False 120,60 True |
Button | Name Text |
Display Anzeige |
Button | Name Text |
GetEntries Einträge abrufen |
ComboBox | Name Text Enabled |
PickEntries Eintrag auswählen False |
Auffüllen des Kombinationsfelds
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ächeGetEntries
, 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
Drücken Sie zum Testen des Codes F5, um die Anwendung zu kompilieren, und klicken Sie dann auf Get Entries (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
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
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.
Control | Eigenschaften | Werte |
---|---|---|
Button | Name Text Enabled |
DeleteEntry Eintrag löschen False |
Button | Name Text Enabled |
EditEntry Edit Entry (Eintrag bearbeiten) False |
Button | Name Text Enabled |
SubmitEdit Änderung eintragen False |
Löschen und Ändern von Eintragen aktivieren
Fügen Sie dem Click-Ereignis der Schaltfläche
Display
nachDisplayEntry.Text = ReadString
folgenden Code hinzu:DeleteEntry.enabled = True
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
Wenn ein Benutzer einen Eintrag anzeigt, wird die Schaltfläche
EditEntry
aktiviert. Fügen Sie dem Click-Ereignis der SchaltflächeDisplay
nachDisplayEntry.Text = ReadString
den folgenden Code hinzu:EditEntry.Enabled = True
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
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 Get Entries (Einträge abrufen), wählen Sie einen Eintrag aus, und klicken Sie anschließend auf Anzeige. Der Eintrag wird in TextBoxDisplayEntry
angezeigt. Klicken Sie auf Edit Entry (Eintrag bearbeiten). Der Eintrag wird in TextBoxEntry
angezeigt. Bearbeiten Sie den Eintrag in TextBoxEntry
, 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.