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:

Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí.

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ík řešení a otevře se návrhář model Windows Forms.

  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 model Windows Forms. Poklikáním na Submit tlačítko vytvořte obslužnou rutinu Click události pro tlačítko 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í kurzor 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. Po nastavení proměnné Today na aktuální datum vložte následující kódfw = New StreamWriter("C:\MyDiary.txt", True).

    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 Click přidejte následující kódClear.

    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.

Ctrl Vlastnosti Hodnoty
TextBox Název

Visible

Velikost

Víceřádkové
DisplayEntry

False

120,60

True
Button Název

Text
Display

Zobrazit
Button Název

Text
GetEntries

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

Text

Povoleno
PickEntries

Výběr položky

False

Naplnění pole se seznamem

  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. Na tlačítko vytvořte obslužnou rutinu ClickGetEntries události 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 ComboBox seznamu zobrazte data zadání.

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

  1. Vytvořte obslužnou rutinu ClickDisplay události pro tlačítko 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.

Ctrl 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 přidejte následující Display kód za DisplayEntry.Text = ReadString.Click

    DeleteEntry.enabled = True
    
  2. Vytvořte obslužnou rutinu ClickDeleteEntry události pro tlačítko 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. Do události Display tlačítka za DisplayEntry.Text = ReadStringpřidejte následující kód Click .

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

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Vytvořte obslužnou rutinu ClickSubmitEdit události pro tlačítko 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 ji a potvrďte odstranění.

Viz také