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, zjistit, zda je k souboru přístup, vyhledejte řetězec v souboru, který je čten s instancí StreamReader třídy, a zapište 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í (IDE).

Vytvoření aplikace

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

Vytvoření projektu

  1. V nabídce soubor vyberte Nový Project.

  2. v podokně nový Project klikněte na Windows aplikace.

  3. Do pole název zadejte MyDiary a klikněte na OK.

    Visual Studio přidá projekt do Průzkumník řešení a otevře se Návrhář formulářů .

  4. Do formuláře přidejte ovládací prvky v následující tabulce a nastavte odpovídající hodnoty jejich vlastností.

Objekt Vlastnosti Hodnota
Button Název

Text
Submit

Odeslat položku
Button Název

Text
Clear

Vymazat položku
TextBox Název

Text

Multiline
Entry

Zadejte prosím něco.

False

Zápis do souboru

Chcete-li přidat možnost zapisovat do souboru přes aplikaci, použijte StreamWriter třídu. StreamWriter je navržen pro výstup znaku v konkrétním kódování, zatímco Stream Třída je navržena pro bajtový vstup a výstup. Používá StreamWriter se pro zápis řá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í vyberte 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í vyberte možnost návrhář a vraťte se k Návrhář formulářů. Dvakrát klikněte na Submit tlačítko a vytvořte Click obslužnou rutinu události pro tlačítko a poté přidejte následující kód.

    Dim fw As StreamWriter
    

Poznámka

Visual Studio integrované vývojové prostředí (IDE) se vrátí do editoru kódu a umístí kurzor do obslužné rutiny události, kde byste měli kód přidat.

  1. Chcete-li zapisovat do souboru, použijte Write metodu StreamWriter třídy. Následující kód přidejte přímo za Dim fw As StreamWriter . Nemusíte se obávat, že výjimka bude vyvolána, pokud soubor nebyl nalezen, protože bude vytvořen, 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 Diary, bude uživatel chtít přiřadit datum ke každé položce. Po fw = New StreamWriter("C:\MyDiary.txt", True) nastavení proměnné na aktuální datum vložte následující kód Today .

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Nakonec připojte kód pro vymazání TextBox . Přidejte následující kód do Clear Click události tlačítka.

    Entry.Text = ""
    

Přidání funkcí zobrazení do Diary

V této části přidáte funkci, která zobrazí nejnovější položku v DisplayEntry TextBox . Můžete také přidat a zobrazit ComboBox různé položky, ze kterých může uživatel vybrat položku, která se zobrazí v DisplayEntry TextBox . Instance StreamReader třídy načtená z MyDiary.txt . Podobně jako StreamWriter Třída StreamReader je určena 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 jejich vlastností.

Řízení Vlastnosti Hodnoty
TextBox Název

Viditelné

Velikost

Multiline
DisplayEntry

False

120,60

True
Button Název

Text
Display

Displej
Button Název

Text
GetEntries

Získat položky
ComboBox Název

Text

Povoleno
PickEntries

Vybrat položku

False

Naplnění pole se seznamem

  1. PickEntries ComboBox Slouží k zobrazení dat, kdy uživatel každou položku odešle, takže uživatel může vybrat položku z konkrétní datum. Vytvořte Click obslužnou rutinu události pro GetEntries tlačítko 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, stiskněte klávesu F5 pro zkompilování aplikace a pak klikněte na tlačítko získat položky. Kliknutím na šipku rozevíracího seznamu v části ComboBox zobrazíte data položky.

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

  1. Vytvořte Click obslužnou rutinu události pro Display 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. Chcete-li otestovat kód, stiskněte klávesu F5 pro zkompilování aplikace a pak odešlete položku. Klikněte na získat položky, vyberte položku z ComboBox a pak klikněte na Zobrazit. Obsah vybrané položky se zobrazí v části DisplayEntry TextBox .

Povolení uživatelům odstraňovat nebo upravovat položky

Nakonec můžete zahrnout další funkce, které uživatelům umožňují odstranit nebo upravit položku pomocí DeleteEntry EditEntry tlačítek a. Obě tlačítka zůstanou zakázaná, pokud není zobrazená položka.

Do formuláře přidejte ovládací prvky v následující tabulce a nastavte odpovídající hodnoty jejich vlastností.

Ří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 úpravu

False

Povolení odstranění a změny položek

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

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

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

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Vytvořte Click obslužnou rutinu události pro tlačítko a SubmitEdit 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 kód otestovat, stisknutím klávesy F5 zkompilujte aplikaci. Klikněte na Získat položky, vyberte položku a pak klikněte na Zobrazit. Položka se zobrazí v DisplayEntry TextBox . Klikněte na Edit Entry (Upravit položku). Položka se zobrazí v Entry TextBox . Upravte položku v a Entry TextBox klikněte na Odeslat Upravit. Otevřete soubor MyDiary.txt a potvrďte opravu. Teď vyberte položku a klikněte na Odstranit položku. Po potvrzení MessageBox žádosti klikněte na OK. Zavřete aplikaci a otevřete MyDiary.txt ji, abyste odstranění potvrdili.

Viz také