Condividi tramite


Procedura dettagliata: modifica di file mediante i metodi .NET Framework (Visual Basic)

In questa procedura dettagliata viene illustrato come aprire e leggere un file mediante la classe StreamReader, verificare se altri utenti accedono al file, cercare una stringa nel corso della lettura di un file tramite un'istanza della classe StreamReader e scrivere in un file mediante la classe StreamWriter.

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni vedere Personalizzazione delle impostazioni di sviluppo in Visual Studio.

Creazione dell'applicazione

Avviare Visual Studio e iniziare il progetto creando un form che consenta agli utenti di scrivere nel file designato.

Per creare il progetto

  1. Scegliere Nuovo progetto dal menu File.

  2. Nel riquadro Nuovo progetto scegliere Applicazione Windows.

  3. Nella casella Nome digitare MyDiary, quindi scegliere OK.

    Visual Studio aggiungerà il progetto a Esplora soluzioni e verrà aperto Progettazione Windows Form.

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

Object

Proprietà

Valore

Button

Nome

Text

Submit

Submit Entry

Button

Nome

Text

Clear

Clear Entry

TextBox

Nome

Text

Multiline

Voce

Please enter something.

False

Scrittura nel file

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

Per aggiungere la funzionalità di scrittura

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

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

    Imports System
    Imports System.IO
    

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

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

    Dim fw As StreamWriter
    

Nota

L'ambiente di sviluppo integrato (IDE) di Visual Studio ritorna all'editor di codice, con il punto di inserimento posizionato all'interno del gestore di eventi in cui è necessario aggiungere il codice.

  1. Per scrivere nel file, utilizzare il metodo Write della classe StreamWriter. Aggiungere il codice seguente subito dopo Dim fw As StreamWriter. Non è necessario preoccuparsi della generazione di eccezioni nel caso in cui il file non venga trovato, poiché il file necessario 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. Assicurarsi che l'utente non possa lasciare il campo vuoto aggiungendo il codice seguente subito dopo Dim ReadString As String.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something." 
        Return 
    End If
    
  3. Trattandosi di un diario, è probabile che l'utente desideri 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. Aggiungere infine il codice necessario per la rimozione di TextBox. Aggiungere il codice seguente all'evento Click del pulsante Clear.

    Entry.Text = ""
    

Aggiunta delle funzionalità di visualizzazione al diario

In questa sezione viene illustrato come aggiungere una funzionalità che consente la visualizzazione dell'ultima voce aggiunta a DisplayEntry TextBox. È inoltre possibile aggiungere un controllo ComboBox in cui vengono visualizzate le diverse voci e da cui gli utenti potranno selezionare la voce da visualizzare nel controllo DisplayEntryTextBox. Da MyDiary.txt viene creata un'istanza della classe StreamReader. Al pari della classe StreamWriter, StreamReader deve essere utilizzata con file di testo.

Per questa sezione della procedura, aggiungere al form i controlli riportati nella tabella che segue e impostare i valori corrispondenti per le relative proprietà.

Controllo

Proprietà

Valori

TextBox

Nome

Visible

Dimensione

Multiline

DisplayEntry

False

120,60

True

Button

Nome

Text

Visualizzazione

Visualizzazione

Button

Nome

Text

GetEntries

Get Entries

ComboBox

Nome

Text

Enabled

PickEntries

Select an Entry

False

Per inserire la casella combinata

  1. Il controllo ComboBox PickEntries viene utilizzato per visualizzare le date di immissione di ogni voce da parte dell'utente, affinché sia possibile selezionare una voce con una data specifica. Creare un gestore di eventi Click per il pulsante GetEntries e aggiungere il seguente codice.

    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 eseguire il test del codice, premere F5 per compilare l'applicazione e fare clic su Get Entries. Fare clic sulla freccia a discesa nel controllo ComboBox per visualizzare le date delle voci.

Per scegliere e visualizzare le singole voci

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

    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 eseguire il test del codice, premere F5 per compilare l'applicazione, quindi immettere una voce. Fare clic su Get Entries, selezionare una voce dal controllo ComboBox, quindi scegliere Display. Nel controllo TextBox DisplayEntry verrà visualizzato il contenuto della voce selezionata.

Abilitazione degli utenti a eliminare o modificare le voci

Infine, è possibile includere un'ulteriore funzionalità che consente agli utenti di eliminare o modificare una voce mediante i pulsanti DeleteEntry e EditEntry, attivati solo quando viene visualizzata una voce.

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

Controllo

Proprietà

Valori

Button

Nome

Text

Enabled

DeleteEntry

Delete Entry

False

Button

Nome

Text

Enabled

EditEntry

Edit Entry

False

Button

Nome

Text

Enabled

SubmitEdit

Submit Edit

False

Per attivare l'eliminazione e la modifica delle voci

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

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

    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 una voce viene visualizzata dall'utente, il pulsante EditEntry viene attivato. Aggiungere il codice riportato di seguito all'evento Click del pulsante Display, dopo DisplayEntry.Text = ReadString.

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

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

    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 eseguire il test del codice, premere F5 per compilare l'applicazione. Fare clic su Get Entries, selezionare una voce, quindi scegliere Display. La voce verrà visualizzata nel controllo TextBox DisplayEntry. Fare clic su Edit Entry. La voce verrà visualizzata nel controllo TextBox Entry. Modificare la voce nel controllo TextBox Entry e fare clic su Submit Edit. Aprire il file MyDiary.txt per confermare la correzione, quindi selezionare una voce e fare clic su Delete Entry. Quando viene richiesta una conferma da MessageBox, scegliere OK. Chiudere l'applicazione e aprire MyDiary.txt per confermare l'eliminazione.

Vedere anche

Riferimenti

StreamReader

StreamWriter

Altre risorse

Procedure dettagliate relative al linguaggio Visual Basic