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
V nabídce soubor vyberte Nový Project.
v podokně nový Project klikněte na Windows aplikace.
Do pole název zadejte
MyDiarya klikněte na OK.Visual Studio přidá projekt do Průzkumník řešení a otevře se Návrhář formulářů .
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 |
SubmitOdeslat položku |
| Button | Název Text |
ClearVymazat položku |
| TextBox | Název Text Multiline |
EntryZadejte 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
V nabídce zobrazení vyberte 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.IOPřed zápisem do souboru je nutné vytvořit instanci StreamWriter třídy.
v nabídce zobrazení vyberte možnost návrhář a vraťte se k Návrhář formulářů. Dvakrát klikněte na
Submittlačí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.
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 TryUjistě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 IfVzhledem 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ódToday.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)Nakonec připojte kód pro vymazání TextBox . Přidejte následující kód do
ClearClick 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 |
DisplayEntryFalse120,60True |
| Button | Název Text |
DisplayDisplej |
| Button | Název Text |
GetEntriesZískat položky |
| ComboBox | Název Text Povoleno |
PickEntriesVybrat položku False |
Naplnění pole se seznamem
PickEntriesComboBox 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 proGetEntriestlačí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 = TrueChcete-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
Vytvořte Click obslužnou rutinu události pro
Displaytlačí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 = ReadStringChcete-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
DisplayEntryTextBox .
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 |
DeleteEntryOdstranit položku False |
| Button | Název Text Povoleno |
EditEntryUpravit položku False |
| Button | Název Text Povoleno |
SubmitEditOdeslat úpravu False |
Povolení odstranění a změny položek
Přidejte následující kód do
DisplayClick události tlačítka, potéDisplayEntry.Text = ReadString.DeleteEntry.enabled = TrueVytvořte Click obslužnou rutinu události pro
DeleteEntrytlačí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 IfKdyž uživatel zobrazí položku,
EditEntrytlačítko se povolí. Do události tlačítka za Click přidejteDisplaynásledujícíDisplayEntry.Text = ReadStringkód.EditEntry.Enabled = TrueVytvořte Click obslužnou rutinu události pro tlačítko a
EditEntrypřidejte následující kód.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = TrueVytvořte Click obslužnou rutinu události pro tlačítko a
SubmitEditpř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.