Exemplarische Vorgehensweise: Bearbeiten von Dateien mit .NET Framework-Methoden (Visual Basic)Walkthrough: Manipulating Files by Using .NET Framework Methods (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.This walkthrough demonstrates how to open and read a file using the StreamReader class, check to see if a file is being accessed, search for a string within a file read with an instance of the StreamReader class, and write to a file using the StreamWriter class.

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.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig.The Visual Studio edition that you have and the settings that you use determine these elements. Weitere Informationen finden Sie unter Personalisieren der IDE.For more information, see Personalizing the IDE.

Erstellen der AnwendungCreating the Application

Starten Sie Visual StudioVisual Studio und beginnen Sie das Projekt durch Erstellen eines Formulars, mit dem ein Benutzer in die festgelegte Datei schreiben kann.Start Visual StudioVisual Studio and begin the project by creating a form that the user can use to write to the designated file.

So erstellen Sie das ProjektTo create the project

  1. Wählen Sie im Menü Datei die Option Neues Projekt aus.On the File menu, select New Project.

  2. Klicken Sie im Bereich Neues Projekt auf Windows-Anwendung.In the New Project pane, click Windows Application.

  3. Geben Sie im Feld Name die Bezeichnung MyDiary ein, und klicken Sie auf OK.In the Name box type MyDiary and click OK.

    Visual StudioVisual Studio fügt das Projekt in den Projektmappen-Explorer ein. Der Windows Forms-Designer wird geöffnet. adds the project to Solution Explorer, and the Windows Forms Designer opens.

  4. Fügen Sie die Steuerelemente aus der folgenden Tabelle zum Formular hinzu, und legen Sie die entsprechenden Werte für die Eigenschaften fest.Add the controls in the following table to the form and set the corresponding values for their properties.

ObjektObject EigenschaftenProperties WertValue
Button NameName

TextText
Submit

Eintrag eintragenSubmit Entry
Button NameName

TextText
Clear

Eintrag löschenClear Entry
TextBox NameName

TextText

MultilineMultiline
Entry

Bitte machen Sie eine Eingabe.Please enter something.

False

In eine Datei schreibenWriting to the File

Verwenden Sie die Klasse StreamWriter, um die Möglichkeit hinzuzufügen, über die Anwendung in eine Datei zu schreiben.To add the ability to write to a file via the application, use the StreamWriter class. 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.StreamWriter is designed for character output in a particular encoding, whereas the Stream class is designed for byte input and output. Verwenden Sie StreamWriter zum Schreiben von Informationszeilen in eine Standardtextdatei.Use StreamWriter for writing lines of information to a standard text file. Weitere Informationen zur Klasse StreamWriter finden Sie unter StreamWriter.For more information on the StreamWriter class, see StreamWriter.

Funktionen zum Schreiben hinzufügenTo add writing functionality

  1. Wählen Sie im Menü Ansicht Code aus, um den Code-Editor zu öffnen.From the View menu, choose Code to open the Code Editor.

  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.Because the application references the System.IO namespace, add the following statements at the very beginning of your code, before the class declaration for the form, which begins Public Class Form1.

    Imports System
    Imports System.IO
    

    Bevor Sie in eine Datei schreiben können, müssen Sie eine Instanz der Klasse StreamWriter erstellen.Before writing to the file, you must create an instance of a StreamWriter class.

  3. Wählen Sie im Menü Ansicht Designer aus, um zum Windows Forms-Designer zurückzukehren.From the View menu, choose Designer to return to the Windows Forms Designer. 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.Double-click the Submit button to create a Click event handler for the button, and then add the following code.

    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.The Visual Studio Integrated Development Environment (IDE) will return to the Code Editor and position the insertion point within the event handler where you should add the code.

  1. Verwenden Sie zum Schreiben in die Datei die Methode Write der Klasse StreamWriter.To write to the file, use the Write method of the StreamWriter class. Fügen Sie direkt hinter Dim fw As StreamWriter folgenden Code ein.Add the following code directly after Dim fw As StreamWriter. 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.You do not need to worry that an exception will be thrown if the file is not found, because it will be created if it does not already exist.

    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.Make sure that the user cannot submit a blank entry by adding the following code directly after Dim ReadString As String.

    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.Because this is a diary, the user will want to assign a date to each entry. Fügen Sie folgenden Code nach fw = New StreamWriter("C:\MyDiary.txt", True) ein, um die Variable Today auf das aktuelle Datum einzustellen.Insert the following code after fw = New StreamWriter("C:\MyDiary.txt", True) to set the variable Today to the current date.

    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.Finally, attach code to clear the TextBox. Fügen Sie dem Click-Ereignis der Schaltfläche Clear folgenden Code hinzu:Add the following code to the Clear button's Click event.

    Entry.Text = ""
    

Hinzufügen von Anzeigefunktionen zum KalenderAdding Display Features to the Diary

In diesem Abschnitt fügen Sie eine Funktion hinzu, mit der der letzte Eintrag in TextBox DisplayEntry angezeigt wird.In this section, you add a feature that displays the latest entry in the DisplayEntryTextBox. 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.You can also add a ComboBox that displays various entries and from which a user can select an entry to display in the DisplayEntryTextBox. Eine Instanz der Klasse StreamReader liest aus MyDiary.txt.An instance of the StreamReader class reads from MyDiary.txt. Wie die Klasse StreamWriter ist StreamReader für die Verwendung mit Textdateien vorgesehen.Like the StreamWriter class, StreamReader is intended for use with text files.

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.For this section of the walkthrough, add the controls in the following table to the form and set the corresponding values for their properties.

SteuerelementControl EigenschaftenProperties WerteValues
TextBox NameName

VisibleVisible

SizeSize

MultilineMultiline
DisplayEntry

False

120,60

True
Button NameName

TextText
Display

AnzeigenDisplay
Button NameName

TextText
GetEntries

Einträge abrufenGet Entries
ComboBox NameName

TextText

AktiviertEnabled
PickEntries

Eintrag auswählenSelect an Entry

False

Auffüllen des KombinationsfeldsTo populate the combo box

  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.The PickEntriesComboBox is used to display the dates on which a user submits each entry, so the user can select an entry from a specific date. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche GetEntries, und fügen Sie ihm den folgenden Code hinzu:Create a Click event handler to the GetEntries button and add the following code.

    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.To test your code, press F5 to compile the application, and then click Get Entries. Klicken Sie auf den Dropdownpfeil in ComboBox, um die Datumsangaben für die Einträge anzuzeigen.Click the drop-down arrow in the ComboBox to display the entry dates.

Auswählen und Anzeigen einzelner EinträgeTo choose and display individual entries

  1. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche Display, und fügen Sie den folgenden Code hinzu:Create a Click event handler for the Display button and add the following code.

    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.To test your code, press F5 to compile the application, and then submit an entry. Klicken Sie auf Einträge abrufen, wählen Sie einen Eintrag aus ComboBox aus, und klicken Sie anschließend auf Anzeigen.Click Get Entries, select an entry from the ComboBox, and then click Display. Der Inhalt des ausgewählten Eintrags wird im TextBox DisplayEntry angezeigt.The contents of the selected entry appear in the DisplayEntryTextBox.

Benutzern das Löschen oder Ändern von Einträgen erlaubenEnabling Users to Delete or Modify Entries

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.Finally, you can include additional functionality enables users to delete or modify an entry by using DeleteEntry and EditEntry buttons. Beide Schaltflächen sind deaktiviert bis ein Eintrag angezeigt wird.Both buttons remain disabled unless an entry is displayed.

Fügen Sie die Steuerelemente aus der folgenden Tabelle zum Formular hinzu, und legen Sie die entsprechenden Werte für die Eigenschaften fest.Add the controls in the following table to the form and set the corresponding values for their properties.

SteuerelementControl EigenschaftenProperties WerteValues
Button NameName

TextText

AktiviertEnabled
DeleteEntry

Eintrag löschenDelete Entry

False
Button NameName

TextText

AktiviertEnabled
EditEntry

Edit Entry (Eintrag bearbeiten)Edit Entry

False
Button NameName

TextText

AktiviertEnabled
SubmitEdit

Submit Edit (Änderung eintragen)Submit Edit

False

Löschen und Ändern von Eintragen aktivierenTo enable deletion and modification of entries

  1. Fügen Sie dem Click-Ereignis der Schaltfläche Display nach DisplayEntry.Text = ReadString folgenden Code hinzu:Add the following code to the Display button's Click event, after DisplayEntry.Text = ReadString.

    DeleteEntry.enabled = True
    
  2. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche DeleteEntry, und fügen Sie den folgenden Code hinzu:Create a Click event handler for the DeleteEntry button and add the following code.

    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.When a user displays an entry, the EditEntry button becomes enabled. Fügen Sie dem Click-Ereignis der Schaltfläche Display nach DisplayEntry.Text = ReadString den folgenden Code hinzu:Add the following code to the Click event of the Display button after DisplayEntry.Text = ReadString.

    EditEntry.Enabled = True
    
  4. Erstellen Sie einen Click-Ereignishandler für die Schaltfläche EditEntry, und fügen Sie den folgenden Code hinzu:Create a Click event handler for the EditEntry button and add the following code.

    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:Create a Click event handler for the SubmitEdit button and add the following code

    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.To test your code, press F5 to compile the application. Klicken Sie auf Einträge abrufen, wählen Sie einen Eintrag aus, und klicken Sie anschließend auf Anzeigen.Click Get Entries, select an entry, and then click Display. Der Eintrag wird in TextBox DisplayEntry angezeigt.The entry appears in the DisplayEntryTextBox. Klicken Sie auf Edit Entry (Eintrag bearbeiten).Click Edit Entry. Der Eintrag wird in TextBox Entry angezeigt.The entry appears in the EntryTextBox. Bearbeiten Sie den Eintrag in TextBox Entry, und klicken Sie auf Bearbeitung senden.Edit the entry in the EntryTextBox and click Submit Edit. Öffnen Sie die MyDiary.txt-Datei, um Ihre Korrekturen zu bestätigen.Open the MyDiary.txt file to confirm your correction. Wählen Sie jetzt einen Eintrag aus, und klicken Sie auf Eintrag löschen.Now select an entry and click Delete Entry. Wenn Sie in MessageBox zur Bestätigung aufgefordert werden, klicken Sie auf OK.When the MessageBox requests confirmation, click OK. Schließen Sie die Anwendung und öffnen Sie MyDiary.txt, um den Löschvorgang zu bestätigen.Close the application and open MyDiary.txt to confirm the deletion.

Siehe auchSee Also

StreamReader
StreamWriter
Exemplarische VorgehensweisenWalkthroughs