Sdílet prostřednictvím


Návod: Manipulace se soubory pomocí metod rozhraní .NET Framework (Visual Basic)

Tento názorný postup ukazuje, jak otevřít a číst soubor pomocí StreamReader třídy, zkontrolovat, jestli se k souboru přistupuje, vyhledat řetězec v souboru přečteném pomocí instance StreamReader třídy a zapisovat do souboru pomocí StreamWriter třídy.

Poznámka:

Počítač může v následujících pokynech zobrazit různé názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Edice sady Visual Studio, kterou máte, a nastavení, která používáte, určují tyto prvky. Další informace najdete v tématu Přizpůsobeníintegrovaného vývojového prostředí (IDE).

Vytvoření aplikace

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

Vytvoření projektu

  1. V nabídce Soubor vyberte Nový projekt.

  2. V podokně Nový projekt klikněte na aplikaci systému Windows.

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

    Visual Studio přidá projekt do Průzkumníka řešení a otevře se Windows Forms Designer .

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

Objekt Vlastnosti Hodnota
Button název

Text
Submit

Odeslat položku
Button název

Text
Clear

Vymazat položku
TextBox název

Text

víceřádkové
Entry

Zadejte něco.

False

Zápis do souboru

Pokud chcete přidat možnost zápisu do souboru prostřednictvím aplikace, použijte StreamWriter třídu. StreamWriter je určen pro výstup znaků v určitém kódování, zatímco Stream třída je určena pro bajtový vstup a výstup. Slouží StreamWriter k zápisu řádků informací do standardního textového souboru. Další informace o StreamWriter třídě naleznete v tématu StreamWriter.

Přidání funkce zápisu

  1. V nabídce Zobrazení zvolte Kód a otevřete Editor kódu.

  2. Vzhledem k tomu, že aplikace odkazuje na System.IO obor názvů, 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.IO
    

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

  3. V nabídce Zobrazení zvolte Návrhář a vraťte se do návrháře Windows Forms. Dvojitým kliknutím na tlačítko Submit vytvoříte obslužnou rutinu události pro tlačítko Click a přidejte následující kód.

    Dim fw As StreamWriter
    

Poznámka:

Integrované vývojové prostředí (IDE) sady Visual Studio se vrátí do Editoru kódu a umístí bod vložení do obslužné rutiny události, kam byste měli přidat kód.

  1. K zápisu do souboru použijte Write metodu StreamWriter třídy. Přidejte následující kód přímo za Dim fw As StreamWriter. Nemusíte se obávat, že pokud se soubor nenajde, vyvolá se výjimka, protože se vytvoří, pokud ještě neexistuje.

    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žku přidáním následujícího kódu přímo za Dim ReadString As String.

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

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Nakonec připojte kód, který vymaže TextBox. Do události tlačítka Clear přidejte následující kód Click.

    Entry.Text = ""
    

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

V této části přidáte funkci, která zobrazí nejnovější položku v souboru DisplayEntryTextBox. Můžete také přidat ComboBox , který zobrazuje různé položky a ze kterých uživatel může vybrat položku, která se má zobrazit v DisplayEntryTextBoxsouboru . Instance StreamReader třídy čte z MyDiary.txt. Stejně jako třída StreamWriterStreamReader je určená pro použití s textovými soubory.

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

Řízení Vlastnosti Hodnoty
TextBox název

viditelný

velikost

víceřádkové
DisplayEntry

False

120,60

True
Button název

Text
Display

zobrazení
Button název

Text
GetEntries

Získání položek
ComboBox název

Text

Povoleno
PickEntries

Výběr položky

False

Naplnění kombinovaného pole

  1. Slouží PickEntriesComboBox k zobrazení kalendářních dat, kdy uživatel odešle každou položku, aby uživatel mohl vybrat položku z konkrétního data. Vytvořte Click obslužnou rutinu události pro tlačítko 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. Chcete-li otestovat kód, stisknutím klávesy F5 zkompilujte aplikaci a klikněte na tlačítko Získat položky. Kliknutím na šipku rozevíracího seznamu v ComboBox zobrazíte data zadání.

Výběr a zobrazení jednotlivých položek

  1. Vytvořte obslužnou rutinu události pro tlačítko ClickDisplay 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. Pokud chcete otestovat kód, stisknutím klávesy F5 zkompilujte aplikaci a pak odešlete položku. Klepněte na tlačítko Získat položky, vyberte položku z ComboBoxa potom klepněte na tlačítko Zobrazit. Obsah vybrané položky se zobrazí v souboru DisplayEntryTextBox.

Povolení uživatelům odstranit nebo upravit položky

Nakonec můžete zahrnout další funkce, které uživatelům umožní odstranit nebo upravit položku pomocí DeleteEntry tlačítek.EditEntry Obě tlačítka zůstávají zakázaná, pokud se nezobrazí položka.

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

Řízení 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

Odeslat úpravy

False

Povolení odstranění a úpravy položek

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

    DeleteEntry.enabled = True
    
  2. Vytvořte obslužnou rutinu události pro tlačítko ClickDeleteEntry 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. Když uživatel zobrazí položku, EditEntry tlačítko se aktivuje. Přidejte následující kód Click do události Display tlačítka po DisplayEntry.Text = ReadString.

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

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Vytvořte obslužnou rutinu události pro tlačítko Click pomocí 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
    

Pokud chcete otestovat kód, stiskněte klávesu F5 a zkompilujte aplikaci. Klepněte na tlačítko Získat položky, vyberte položku a klepněte na tlačítko Zobrazit. Položka se zobrazí v souboru DisplayEntryTextBox. Klikněte na Upravit položku. Položka se zobrazí v souboru EntryTextBox. Upravte položku v EntryTextBox položce a klikněte na Odeslat úpravy. MyDiary.txt Otevřete soubor a potvrďte opravu. Teď vyberte položku a klikněte na Odstranit položku. MessageBox Po potvrzení žádostí klikněte na ok. Zavřete aplikaci a otevřete MyDiary.txt, abyste potvrdili odstranění.

Viz také