Condividi tramite


Procedura dettagliata: Modifica di file tramite metodi .NET Framework (Visual Basic)

Questa procedura dettagliata illustra come aprire e leggere un file usando la StreamReader classe , verificare se si accede a un file, cercare una stringa all'interno di un file letto con un'istanza della StreamReader classe e scrivere in un file usando la StreamWriter classe .

Annotazioni

Il computer potrebbe visualizzare nomi o percorsi diversi per alcuni degli elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. L'edizione di Visual Studio disponibile e le impostazioni usate determinano questi elementi. Per altre informazioni, vedere Personalizzazione dell'IDE.

Creazione dell'applicazione

Avviare Visual Studio e iniziare il progetto creando un modulo che l'utente può usare per scrivere nel file designato.

Per creare il progetto

  1. Scegliere Nuovo progetto dal menu File.

  2. Nel riquadro Nuovo progetto fare clic su Applicazione Windows.

  3. Nella casella Nome digitare MyDiary e fare clic su OK.

    Visual Studio aggiunge il progetto a Esplora soluzioni e Windows Forms Designer viene aperto.

  4. Aggiungere i controlli nella tabella seguente al form e impostare i valori corrispondenti per le relative proprietà.

oggetto Proprietà Valore
Button Nome

Testo
Submit

Invia partecipazione
Button Nome

Testo
Clear

Cancella campo
TextBox Nome

Testo

multilinea
Entry

Immettere qualcosa.

False

Scrittura nel file

Per aggiungere la possibilità di scrivere in un file tramite l'applicazione, usare la StreamWriter classe . StreamWriter è progettato per l'output dei caratteri in una particolare codifica, mentre la classe Stream è progettata per l'input e l'output dei byte. Utilizzare StreamWriter per scrivere righe di informazioni in un file di testo standard. Per altre informazioni sulla StreamWriter classe , vedere StreamWriter.

Per aggiungere funzionalità di scrittura

  1. Scegliere Codice dal menu Visualizza per aprire l'editor di codice.

  2. Poiché l'applicazione fa riferimento allo System.IO spazio dei nomi, aggiungere le istruzioni seguenti all'inizio del codice, prima della dichiarazione di classe per il modulo, che inizia Public Class Form1.

    Imports System.IO
    

    Prima di scrivere nel file, è necessario creare un'istanza di una StreamWriter classe .

  3. Scegliere Progettazione dal menu Visualizza per tornare a Progettazione Windows Form. Fare doppio clic sul Submit pulsante per creare un Click gestore eventi per il pulsante e quindi aggiungere il codice seguente.

    Dim fw As StreamWriter
    

Annotazioni

L'IDE (Integrated Development Environment) di Visual Studio tornerà all'editor di codice e posizionerà il punto di inserimento all'interno del gestore eventi in cui è necessario aggiungere il codice.

  1. Per scrivere nel file, usare il Write metodo della StreamWriter classe . Aggiungere il codice seguente direttamente dopo Dim fw As StreamWriter. Non è necessario preoccuparsi che venga generata un'eccezione se il file non viene trovato, perché verrà creato se non esiste già.

    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. Assicurati che l'utente non possa inviare un campo vuoto aggiungendo il codice seguente direttamente dopo Dim ReadString As String.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Poiché si tratta di un diario, l'utente vuole assegnare una data a ogni voce. Inserire il codice seguente dopo fw = New StreamWriter("C:\MyDiary.txt", True) per impostare la variabile Today sulla data corrente.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Infine, collegare il codice per cancellare il TextBox. Aggiungere il codice seguente all'evento Clear del Click pulsante.

    Entry.Text = ""
    

Aggiunta di funzionalità di visualizzazione al diario

In questa sezione viene aggiunta una funzionalità che visualizza la voce più recente in DisplayEntryTextBox. È anche possibile aggiungere un oggetto ComboBox che visualizza varie voci e da cui un utente può selezionare una voce da visualizzare in DisplayEntryTextBox. Un'istanza della classe StreamReader legge da MyDiary.txt. Come la StreamWriter classe , StreamReader è destinato all'uso con i file di testo.

Per questa sezione della procedura dettagliata, aggiungere i controlli nella tabella seguente nel modulo e impostare i valori corrispondenti delle loro proprietà.

Controllo Proprietà Valori
TextBox Nome

Visibile

Dimensione

multilinea
DisplayEntry

False

120,60

True
Button Nome

Testo
Display

Schermo
Button Nome

Testo
GetEntries

Ottenere voci
ComboBox Nome

Testo

abilitato
PickEntries

Seleziona una voce

False

Per popolare la casella combinata

  1. L'PickEntriesComboBox viene utilizzato per visualizzare le date in cui un utente invia ogni elemento, in modo che l'utente possa selezionare un elemento da una determinata data. Creare un Click gestore eventi al GetEntries pulsante e aggiungere il codice seguente.

    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. Per testare il codice, premere F5 per compilare l'applicazione e quindi fare clic su Ottieni elementi. Fare clic sulla freccia a discesa in ComboBox per visualizzare le date di immissione.

Per scegliere e visualizzare singole voci

  1. Creare un Click gestore eventi per il Display pulsante e aggiungere il codice seguente.

    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. Per testare il codice, premere F5 per compilare l'applicazione e quindi inviare un invio. Fare clic su Recupera voci, selezionare una voce da ComboBoxe quindi fare clic su Visualizza. Il contenuto della voce selezionata viene visualizzato in DisplayEntryTextBox.

Abilitazione degli utenti a eliminare o modificare le voci

Infine, è possibile includere funzionalità aggiuntive che consentono agli utenti di eliminare o modificare una voce usando i pulsanti DeleteEntry e EditEntry. Entrambi i pulsanti rimangono disabilitati a meno che non venga visualizzata una voce.

Aggiungere i controlli nella tabella seguente al form e impostare i valori corrispondenti per le relative proprietà.

Controllo Proprietà Valori
Button Nome

Testo

abilitato
DeleteEntry

Elimina elemento

False
Button Nome

Testo

abilitato
EditEntry

Modifica elemento

False
Button Nome

Testo

abilitato
SubmitEdit

Invia modifica

False

Per abilitare l'eliminazione e la modifica delle voci

  1. Aggiungi il seguente codice all'evento Display del pulsante Click, dopo DisplayEntry.Text = ReadString.

    DeleteEntry.enabled = True
    
  2. Creare un Click gestore eventi per il DeleteEntry pulsante e aggiungere il codice seguente.

    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. Quando un utente visualizza una voce, il EditEntry pulsante si attiva. Aggiungere il codice seguente all'evento Click del Display pulsante dopo DisplayEntry.Text = ReadString.

    EditEntry.Enabled = True
    
  4. Creare un Click gestore eventi per il EditEntry pulsante e aggiungere il codice seguente.

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Creare un Click gestore eventi per il SubmitEdit pulsante e aggiungere il codice seguente

    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
    

Per testare il codice, premere F5 per compilare l'applicazione. Fare clic su Recupera voci, selezionare una voce e quindi fare clic su Visualizza. La voce viene visualizzata in DisplayEntryTextBox. Clicca su Modifica voce. La voce viene visualizzata in EntryTextBox. Modifica la voce nel EntryTextBox e clicca su Invia modifica. Aprire il MyDiary.txt file per confermare la correzione. Ora selezionare una voce e fare clic su Elimina voce. Quando le MessageBox richiedono conferma, fare clic su OK. Chiudere l'applicazione e aprire MyDiary.txt per confermare l'eliminazione.

Vedere anche