Sdílet prostřednictvím


Podrobné pokyny: Manipulace pomocí souborů.NET Framework metody (Visual Basic)

Tento návod ukazuje, jak otevřít a číst soubor s pomocí třídy StreamReader, jak zkontrolovat zda je soubor používán jiným procesem, jak hledat řetězec v souboru otevřeném pro čtení třídou StreamReader a jak zapisovat do souboru pomocí třídy StreamWriter.

Poznámka

Ve vašem počítači se pro některé z prvků uživatelského rozhraní aplikace Visual Studio mohou zobrazit jiné názvy a umístění, než jsou uvedena v následujících pokynech. Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením. Další informace naleznete v tématu Visual Studio, nastavení.

Vytvoření aplikace

Spusťte Visual Studio a projekt začněte vytvořením formulář, který může uživatel použít k zápisu do určeného soubor.

Jak vytvořit nový projekt

  1. V menu Soubor klikněte na Nový Projekt.

  2. V panelu Nový projekt, klikněte na tlačítko aplikace pro systém Windows.

  3. Do pole Název zadejte MyDiary a poté klikněte na tlačítko OK.

    Visual Studio přidá do projektu Průzkumník řešení a otevře designer pro model Windows Forms.

  4. Přidejte ovládací prvky z následující tabulky do formuláře a nastavte odpovídající hodnoty jejich vlastnosti.

Objekt

Vlastnosti

Hodnota

Button

Název

Text

Odeslat

Odeslat položku

Button

Název

Text

Vymazat

Zrušit položku

TextBox

Název

Text

Víceřádková sleva

Entry

Prosím zadejte něco.

False

Zápis do souboru

Chcete-li přidat možnost zápisu do soubor pomocí aplikace, použijte třídu StreamWriter. StreamWriter je určen pro výstup znaků v určitém kódování, zatímco třída Stream je určená pro bajtový vstupu a výstupu. Použijte StreamWriter pro zapsání řádků s informací do standardního textového soubor. Další informace o třídě StreamWriter naleznete v StreamWriter.

Jak přidat možnost psaní do souboru

  1. Z nabídky Zobrazení zvolte Kódchtete-li otevřít Editor kódu .

  2. Protože se aplikace odkazuje na obor názvů System.IO, přidejte následující příkazy na začátek kódu, před deklaraci třídy pro formulář, který začíná Public Class Form1.

    Imports System
    Imports System.IO
    

    Před zápisem do souboru, je nutné vytvořit instanci třídy StreamWriter.

  3. Z nabídky Zobrazení zvolte Návrhář k návratu do navrhaře pro Windows Forms. Poklepejte na tlačítko Submit k vytvoření obslužné rutiny pro událost Click a poté přidejte následující kód.

    Dim fw As StreamWriter
    

Poznámka

The Visual Studio Integrated Development Environment (IDE) se poté vrátit do editoru kódu a umístí kurzor na místo v rámci obslužná rutiny událost, kde by jste měli přidat kód.

  1. K zápisu do souboru použijte metodu Write z třídy StreamWriter . Přidejte následující kód ihned po Dim fw As StreamWriter: Nepotřebujete se obávat toho, že bude vyvolána výjimka pokud nebude nalezen požadovaný soubor, protože pokud neexistuje bude vytvořen.

    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. Ujistěte se, že uživatel nemůže odeslat prázdnou položka, přidáním následujícího kódu přímo po Dim ReadString As String.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Protože se jedná o zápisník, uživatel bude chtít přiřadit ke každé položce datum. Vložte následující kód po fw = New StreamWriter("C:\MyDiary.txt", True) k nastavení proměnná Today na aktuální datum.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Nakonec připojit kód zrušit zaškrtnutí TextBox. Přidejte následující kód k události Click tlačítka Clear .

    Entry.Text = ""
    

Přidání funkcí zobrazení do deníku

V tomto oddíle přidáte funkcionalitu, která zobrazí poslední položku v DisplayEntry TextBox. Můžete také přidat ovládací prvek ComboBox, který zobrazí různé položky a ze kterého může uživatel vybrat položku, kterou chce zobrazit v DisplayEntryTextBox . Instance třídy StreamReader čte z MyDiary.txt. Podobně jako třída StreamWriter je StreamReader určen pro použití s textovými soubory.

Pro tuto část návodu, přidejte do formuláře ovládací prvky z následující tabulky a nastavte odpovídající hodnoty pro jejich vlastnosti.

Control

Vlastnosti

Hodnoty

TextBox

Název

viditelný;

Velikost

Víceřádková sleva

DisplayEntry

False

120,60

True

Button

Název

Text

Zobrazení

Zobrazení

Button

Název

Text

GetEntries

Získat položky

ComboBox

Název

Text

Povoleno

PickEntries

Vyberte položku

False

Jak naplnit pole se seznamem

  1. Ovládací prvek PickEntriesComboBox slouží k zobrazení data, kdy uživatel odeslal položku. Tímto způsobem může uživatel vybrat položky od určitého data. Vytvořte obslužnou rutinu k události Click tlačítka GetEntries a přidejte následující kód.

    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. K otestování vašeho kódu, stiskněte klávesu F5 k zkompilování aplikace a poté klikněte na tlačítko Získat položky. Klikněte na šipku u rozevíracího seznamu v ComboBox chcete-li zobrazit položky datumů.

Jak vybrat a zobrazit jednotlivé položky

  1. Vytvořte obslužnou rutinu k události Click tlačítka Display a přidejte následující kód.

    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. K otestování vašeho kódu, stiskněte klávesu F5 k zkompilování aplikace a potom odešlete záznam. Klikněte na tlačítko Získat položka,vyberte položku z ComboBoxa potom klikněte na Zobrazit. Obsah vybrané položky se zobrazí v DisplayEntryTextBox

Jak povolit uživatelům odstranit nebo upravit položky

Dále můžete zahrnout další funkcionalitu, která umožní uživatelům odstranit nebo upravit položky pomocí tlačítek DeleteEntry a EditEntry. Obě tlačítka zůstanou neaktivní, dokud se nezobrazí položka.

Přidejte ovládací prvky z následující tabulky do formuláře a nastavte odpovídající hodnoty jejich vlastnosti.

Control

Vlastnosti

Hodnoty

Button

Název

Text

Povoleno

DeleteEntry

Odstranit položku

False

Button

Název

Text

Povoleno

EditEntry

Upravit položku

False

Button

Název

Text

Povoleno

SubmitEdit

Odeslání úpravy

False

Povolit odstraňování a úpravy položek

  1. Přidejte následující kód k události Click tlačítka Display, za DisplayEntry.Text = ReadString.

    DeleteEntry.enabled = True
    
  2. Vytvořte obslužnou rutinu k události Click tlačítka DeleteEntry a přidejte následující kód.

    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. Tlačítko EditEntry se stane aktivním, jakmile uživatel zobrazí položku. Přidejte následující kód k události Click tlačítka Display, za DisplayEntry.Text = ReadString.

    EditEntry.Enabled = True
    
  4. Vytvořte obslužnou rutinu k události Click tlačítka EditEntry a přidejte následující kód.

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Vytvořte obslužnou rutinu k události Click tlačítka SubmitEdit a přidejte následující kód.

    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
    

Chcete-li otestovat váš kód, stiskněte klávesu F5 k zkompilování aplikace. Klikněte na tlačítko Získat položky, označte položku a klikněte na tlačítko Zobrazit. Položka se zobrazí v DisplayEntryTextBox. Klikněte na tlačítko Úprava položky. Položka se zobrazí v EntryTextBox. Upravte položku v Entry TextBox a klikněte na tlačítko Odeslat úpravu. Otevřete soubor MyDiary.txt k ověření vašich oprav. Nyní vyberte položku a klikněte na tlačítko Odstranit položku. Když MessageBox požádá o potvrzení, klikněte na tlačítko Ok. Ukončete aplikaci a otevřete MyDiary.txt k potvrzení odstranění.

Viz také

Odkaz

StreamReader

StreamWriter

Další zdroje

Návody jazyka Visual Basic