Návod: Manipulace se soubory pomocí metod rozhraní .NET Framework (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]
Na vašem počítači se můžou v následujících pokynech zobrazovat jiné názvy nebo umístění některých prvků uživatelského rozhraní Visual Studia. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.
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
V menu Soubor klikněte na Nový Projekt.
V panelu Nový projekt, klikněte na tlačítko aplikace pro systém Windows.
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.
Přidejte ovládací prvek do následující tabulky na formuláři a nastavte odpovídající hodnot jejich vlastnosti.
Objekt |
Vlastnosti |
Value |
Název Text |
Odeslat Odeslat položku |
|
Název Text |
Vymazat Zrušit položku |
|
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
Z nabídky Zobrazení zvolte Kódchtete-li otevřít Editor kódu .
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.
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.
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
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
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)
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 DisplayEntryTextBox. 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.
Ovládací prvek |
Vlastnosti |
Hodnoty |
---|---|---|
Název viditelný; Size Víceřádková sleva |
DisplayEntry False 120,60 True |
|
Název Text |
Zobrazení Zobrazení |
|
Název Text |
GetEntries Získat položky |
|
Název Text Povoleno |
PickEntries Vyberte položku False |
Jak naplnit pole se seznamem
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
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
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
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í prvek do následující tabulky na formuláři a nastavte odpovídající hodnot jejich vlastnosti.
Ovládací prvek |
Vlastnosti |
Hodnoty |
---|---|---|
Název Text Povoleno |
DeleteEntry Odstranit položku False |
|
Název Text Povoleno |
EditEntry Upravit položku False |
|
Název Text Povoleno |
SubmitEdit Odeslání úpravy False |
Povolit odstraňování a úpravy položek
Přidejte následující kód k události Click tlačítka Display, za DisplayEntry.Text = ReadString.
DeleteEntry.enabled = True
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
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
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
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 EntryTextBox 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í.