Dela via


Genomgång: Manipulera filer med hjälp av .NET Framework-metoder (Visual Basic)

Den här genomgången visar hur du öppnar och läser en fil med hjälp av StreamReader klassen, kontrollerar om en fil används, söker efter en sträng i en fil som läss med en instans av klassen och skriver till en fil med hjälp StreamWriter av StreamReader klassen.

Kommentar

Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassa IDE.

Skapa programmet

Starta Visual Studio och starta projektet genom att skapa ett formulär som användaren kan använda för att skriva till den avsedda filen.

Så här skapar du projektet

  1. På menyn Arkiv väljer du Nytt projekt.

  2. I fönstret Nytt projekt klickar du på Windows-program.

  3. I rutan Namn skriver du MyDiary och klickar på OK.

    Visual Studio lägger till projektet i Solution Explorer och Windows Forms Designer öppnas.

  4. Lägg till kontrollerna i följande tabell i formuläret och ange motsvarande värden för deras egenskaper.

Objekt Egenskaper Värde
Button Namn

Text
Submit

Skicka post
Button Namn

Text
Clear

Rensa post
TextBox Namn

Text

Multiline
Entry

Ange något.

False

Skriva till filen

Om du vill lägga till möjligheten att skriva till en fil via programmet använder du StreamWriter klassen . StreamWriter är utformad för teckenutdata i en viss kodning, medan Stream klassen är utformad för byteindata och utdata. Används StreamWriter för att skriva informationsrader till en standardtextfil. Mer information om klassen StreamWriterfinns i StreamWriter .

Lägga till skrivfunktioner

  1. På menyn Visa väljer du Kod för att öppna kodredigeraren.

  2. Eftersom programmet refererar till System.IO namnområdet lägger du till följande instruktioner i början av koden, före klassdeklarationen för formuläret, som börjar Public Class Form1.

    Imports System.IO
    

    Innan du skriver till filen måste du skapa en instans av en StreamWriter klass.

  3. På menyn Visa väljer du Designer för att återgå till Windows Forms Designer. Dubbelklicka på Submit knappen för att skapa en Click händelsehanterare för knappen och lägg sedan till följande kod.

    Dim fw As StreamWriter
    

Kommentar

Visual Studio Integrated Development Environment (IDE) återgår till kodredigeraren och placerar insättningspunkten i händelsehanteraren där du bör lägga till koden.

  1. Om du vill skriva till filen använder du Write -metoden för StreamWriter klassen. Lägg till följande kod direkt efter Dim fw As StreamWriter. Du behöver inte oroa dig för att ett undantag utlöses om filen inte hittas, eftersom den skapas om den inte redan finns.

    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. Kontrollera att användaren inte kan skicka en tom post genom att lägga till följande kod direkt efter Dim ReadString As String.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Eftersom det här är en dagbok vill användaren tilldela ett datum till varje post. Infoga följande kod efter fw = New StreamWriter("C:\MyDiary.txt", True) för att ange variabeln Today till aktuellt datum.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Slutligen bifogar du kod för att rensa TextBox. Lägg till följande kod i Clear knappens Click händelse.

    Entry.Text = ""
    

Lägga till visningsfunktioner i dagboken

I det här avsnittet lägger du till en funktion som visar den senaste posten i DisplayEntryTextBox. Du kan också lägga till en ComboBox som visar olika poster och från vilken en användare kan välja en post som ska visas i DisplayEntryTextBox. En instans av StreamReader klassen läser från MyDiary.txt. Precis som StreamWriter klassen StreamReader är avsedd att användas med textfiler.

I det här avsnittet av genomgången lägger du till kontrollerna i följande tabell i formuläret och anger motsvarande värden för deras egenskaper.

Ctrl Egenskaper Värden
TextBox Namn

Synlig

Storlek

Multiline
DisplayEntry

False

120,60

True
Button Namn

Text
Display

Skärm
Button Namn

Text
GetEntries

Hämta poster
ComboBox Namn

Text

Aktiverad
PickEntries

Välj en post

False

Så här fyller du i kombinationsrutan

  1. PickEntriesComboBox Används för att visa de datum då en användare skickar varje post, så att användaren kan välja en post från ett visst datum. Skapa en Click händelsehanterare på GetEntries knappen och lägg till följande kod.

    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. Testa koden genom att trycka på F5 för att kompilera programmet och klicka sedan på Hämta poster. Klicka på listrutepilen i för ComboBox att visa startdatumen.

Så här väljer du och visar enskilda poster

  1. Skapa en Click händelsehanterare för Display knappen och lägg till följande kod.

    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. Testa koden genom att trycka på F5 för att kompilera programmet och sedan skicka en post. Klicka på Hämta poster, välj en post från ComboBoxoch klicka sedan på Visa. Innehållet i den markerade posten visas i DisplayEntryTextBox.

Aktivera användare att ta bort eller ändra poster

Slutligen kan du inkludera ytterligare funktioner som gör det möjligt för användare att ta bort eller ändra en post med hjälp DeleteEntry av och EditEntry knappar. Båda knapparna förblir inaktiverade om inte en post visas.

Lägg till kontrollerna i följande tabell i formuläret och ange motsvarande värden för deras egenskaper.

Ctrl Egenskaper Värden
Button Namn

Text

Aktiverad
DeleteEntry

Ta bort post

False
Button Namn

Text

Aktiverad
EditEntry

Redigera post

False
Button Namn

Text

Aktiverad
SubmitEdit

Skicka redigera

False

Så här aktiverar du borttagning och ändring av poster

  1. Lägg till följande kod i Display knappens Click händelse, efter DisplayEntry.Text = ReadString.

    DeleteEntry.enabled = True
    
  2. Skapa en Click händelsehanterare för DeleteEntry knappen och lägg till följande kod.

    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. När en användare visar en post aktiveras EditEntry knappen. Lägg till följande kod i Click händelsen för Display knappen efter DisplayEntry.Text = ReadString.

    EditEntry.Enabled = True
    
  4. Skapa en Click händelsehanterare för EditEntry knappen och lägg till följande kod.

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Skapa en Click händelsehanterare för SubmitEdit knappen och lägg till följande kod

    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
    

Testa koden genom att trycka på F5 för att kompilera programmet. Klicka på Hämta poster, välj en post och klicka sedan på Visa. Posten visas i DisplayEntryTextBox. Klicka på Redigera post. Posten visas i EntryTextBox. Redigera posten i EntryTextBox och klicka på Skicka redigera. Öppna filen för att bekräfta korrigeringen MyDiary.txt . Välj en post och klicka på Ta bort post. När begäranden MessageBox bekräftas klickar du på OK. Stäng programmet och öppna MyDiary.txt för att bekräfta borttagningen.

Se även