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
V nabídce Soubor vyberte Nový projekt.
V podokně Nový projekt klikněte na aplikaci systému Windows.
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.
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
V nabídce Zobrazení zvolte Kód a otevřete Editor kódu.
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.
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.
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
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
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)
Nakonec připojte kód, který vymaže TextBox. Do události tlačítka Click přidejte následující kód
Clear
.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 DisplayEntry
TextBox. 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 DisplayEntry
TextBoxsouboru . 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
Slouží
PickEntries
ComboBox 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
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
Vytvořte obslužnou rutinu Click
Display
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
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
DisplayEntry
TextBox.
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
Do události tlačítka přidejte následující
Display
kód zaDisplayEntry.Text = ReadString
.ClickDeleteEntry.enabled = True
Vytvořte obslužnou rutinu Click
DeleteEntry
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
Když uživatel zobrazí položku,
EditEntry
tlačítko se aktivuje. Do událostiDisplay
tlačítka zaDisplayEntry.Text = ReadString
přidejte následující kód Click .EditEntry.Enabled = True
Vytvořte obslužnou rutinu Click
EditEntry
události pro tlačítko a přidejte následující kód.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Vytvořte obslužnou rutinu Click
SubmitEdit
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 DisplayEntry
TextBox. Klikněte na Upravit položku. Položka se zobrazí v souboru Entry
TextBox. Upravte položku v Entry
TextBox 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í.