giovedì 3 marzo 2016

Lettura di un file di testo con Visual Basic

L'apertura e la lettura di file con accesso in lettura costituiscono una parte importante della funzionalità di input/output (IO), anche se non è necessario scrivere sul file in questione. In questo esempio viene aperto un file per la lettura, una procedura utile per i file di testo ma non adatta ai file binari. Nell'esempio viene utilizzato uno dei vari metodi disponibili per l'apertura del file. Sebbene siano disponibili diverse strutture di dati per la memorizzazione delle informazioni recuperate dal file, la classe ArrayList è la struttura più semplice da utilizzare. Per aprire e leggere i dati contenuti nel file nell'esempio vengono impiegati oggetti dello spazio dei nomi System.IO, in particolare la classe System.IO.StreamReader.
Per caricare e leggere un file di testo da Visual Basic .NET, attenersi alla seguente procedura:
  1. Aprire Visual Studio .NET. Creare una nuova applicazione console in Visual Basic .NET. In Visual Studio vengono automaticamente creati un modulo e una procedura Main() vuota.
  2. Verificare che il progetto contenga riferimenti per lo meno allo spazio dei nomi System. Utilizzare l'istruzione Imports per gli spazi dei nomi System, System.IO e System.Collections in modo che non sia necessario qualificare in un secondo tempo nel codice le relative dichiarazioni. Queste istruzioni devono essere utilizzate prima di qualunque altra dichiarazione.
     
    Imports System
    Imports System.IO
    Imports System.Collections
     
  3. Per aprire un file per la lettura, creare una nuova istanza di un oggetto StreamReader e passare il percorso del file al costruttore come segue:
    
    Dim objReader As New StreamReader("c:\test.txt")
     
  4. Occorrerà una variabile di stringa in cui memorizzare ogni riga del file man mano che si procede. Poiché le righe verranno aggiunte a ArrayList, dichiarare e creare anche un oggetto di questo tipo.
    
    Dim sLine As String = ""
    Dim arrText As New ArrayList()
  5. Esistono vari modi per leggere all'interno del file, compreso il metodo ReadToEnd con il quale l'intero file viene letto immediatamente. In questo esempio è tuttavia possibile utilizzare il metodo ReadLine per inserire il file una riga alla volta. Una volta raggiunta la fine del file, il metodo restituisce "Nothing", il che costituisce un modo per porre termine al loop. Man mano che ogni riga del file viene letta, è possibile servirsi del metodo Add di ArrayList per inserire le righe nella classe ArrayList.
    
    Do
        sLine = objReader.ReadLine()
        If Not sLine Is Nothing Then
            arrText.Add(sLine)
        End If
    Loop Until sLine Is Nothing
    objReader.Close()
  6. Utilizzare un loop "For Each" per scrivere nella console il contenuto dell'ArrayList in cui sono appena stati inseriti i dati come illustrato di seguito:
    
    For Each sLine In arrText
        Console.WriteLine(sLine)
    Next
    Console.ReadLine()
  7. Salvare ed eseguire il codice, nella console viene visualizzato il file.

Elenco completo del codice


Imports System
Imports System.IO
Imports System.Collections

Module Module1

    Sub Main()
        Dim objReader As New StreamReader("c:\test.txt")
        Dim sLine As String = ""
        Dim arrText As New ArrayList()

        Do
            sLine = objReader.ReadLine()
            If Not sLine Is Nothing Then
                arrText.Add(sLine)
            End If
        Loop Until sLine Is Nothing
        objReader.Close()

        For Each sLine In arrText
            Console.WriteLine(sLine)
        Next
        Console.ReadLine()
    End Sub

End Module

Vi sono vari fattori di cui essere consapevoli quando si lavora con l'I/O di file, fra cui:
  • Ogni volta che si accede a un file vi è la possibilità che il file che si tenta di leggere o su cui si tenta di scrivere non sia presente nel sistema o sia in uso.
  • In questo esempio l'intero file viene letto in memoria prima di essere elaborato. Il file potrebbe essere troppo grande per essere contenuto in memoria oppure l'utente potrebbe non disporre delle autorizzazioni di accesso al file.
In tutti questi casi si verifica un'eccezione. È sempre buona norma fornire un blocco try...catch per gestire queste situazioni comuni.

Nessun commento:

Posta un commento