Usare Visual C# per leggere e scrivere in un file di testo

Questo articolo aiuta a leggere e scrivere in un file di testo utilizzando Visual C#.

Versione originale del prodotto: Visual Studio
Numero della Knowledge Base originale: 816149

Riepilogo

Nella sezione Lettura di un file di testo di questo articolo viene descritto come utilizzare la classe StreamReader per leggere un file di testo. Nelle sezioni Scrivere un file di testo (esempio 1) e Scrivere un file di testo (esempio 2) viene descritto come utilizzare la classe StreamWriter per scrivere testo in un file.

Leggere un file di testo

Nel codice seguente viene utilizzata la classe StreamReader per aprire, leggere e chiudere il file di testo. Si può passare il percorso di un file di testo al costruttore StreamReader per aprirlo automaticamente. Il metodo ReadLine legge ogni riga di testo e incrementa il puntatore del file alla riga successiva durante la lettura. Quando il metodo ReadLine raggiunge la fine del file, restituisce un riferimento null. Per ulteriori informazioni, vedere Classe StreamReader.

  1. Creare un file di testo di esempio in Blocco note. Procedere come segue:

    1. Incollare il testo hello world in Blocco note.
    2. Salvare il file con nome Sample.txt.
  2. Avviare Microsoft Visual Studio.

  3. Nel menu File puntare su Nuovo, quindi scegliere Progetto.

  4. Selezionare Progetti Visual C# in Tipi di progetto e quindi selezionare Applicazione console in Modelli.

  5. Aggiungere il codice seguente all'inizio del file Class1.cs:

    using System.IO;
    
  6. Aggiungere il codice seguente al metodo Main:

    String line;
    try
    {
        //Pass the file path and file name to the StreamReader constructor
        StreamReader sr = new StreamReader("C:\\Sample.txt");
        //Read the first line of text
        line = sr.ReadLine();
        //Continue to read until you reach end of file
        while (line != null)
        {
            //write the line to console window
            Console.WriteLine(line);
            //Read the next line
            line = sr.ReadLine();
        }
        //close the file
        sr.Close();
        Console.ReadLine();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  7. Dal menu Debug scegliere Avvia per compilare ed eseguire l'applicazione. Premere INVIO per chiudere la finestra della Console. Nella finestra Console viene visualizzato il contenuto del file Sample.txt:

    Hello world
    

Scrivere un file di testo (esempio 1)

Nel codice seguente viene utilizzata la classe StreamWriter per aprire, scrivere e chiudere il file di testo. In modo analogo alla classe StreamReader, è possibile passare il percorso di un file di testo al costruttore StreamWriter per aprire automaticamente il file. Il metodo WriteLine scrive una riga di testo completa nel file di testo.

  1. Avviare Visual Studio.

  2. Nel menu File puntare su Nuovo, quindi scegliere Progetto.

  3. Selezionare Progetti Visual C# in Tipi di progetto e quindi selezionare Applicazione console in Modelli.

  4. Aggiungere il codice seguente all'inizio del file Class1.cs:

    using System.IO;
    
  5. Aggiungere il codice seguente al metodo Main:

    try
    {
        //Pass the filepath and filename to the StreamWriter Constructor
        StreamWriter sw = new StreamWriter("C:\\Test.txt");
        //Write a line of text
        sw.WriteLine("Hello World!!");
        //Write a second line of text
        sw.WriteLine("From the StreamWriter class");
        //Close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. Dal menu Debug scegliere Avvia per compilare ed eseguire l'applicazione. Questo codice crea un file denominato Test.txt nell'unità C. Aprire Test.txt in un editor di testo, ad esempio Blocco note. Test.txt contiene due righe di testo:

    Hello World!!
    From the StreamWriter class
    

Scrivere un file di testo (esempio 2)

Nel codice seguente viene utilizzata la classe StreamWriter per aprire, scrivere e chiudere il file di testo. A differenza dell'esempio precedente, questo codice passa due parametri aggiuntivi al costruttore. Il primo parametro è il percorso e il nome del file. Il secondo parametro, true, specifica che il file viene aperto in modalità Append. Se si specifica false per il secondo parametro, il contenuto del file viene sovrascritto ogni volta che si esegue il codice. Il terzo parametro specifica Unicode, in modo che StreamWriter codifichi il file in formato Unicode. È inoltre possibile specificare i metodi di codifica seguenti per il terzo parametro:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

Il metodo Write è simile al metodo WriteLine, con la differenza che il metodo Write non incorpora automaticamente una combinazione di caratteri di ritorno a capo o avanzamento riga (CR/LF). È utile quando si desidera scrivere un carattere alla volta.

  1. Avviare Visual Studio.

  2. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.

  3. Fare clic su Progetti Visual C# in Tipi di progetto e quindi su Applicazione console in Modelli.

  4. Aggiungere il codice seguente all'inizio del file Class1.cs:

    using System.IO;
    using System.Text;
    
  5. Aggiungere il codice seguente al metodo Main:

    Int64 x;
    try
    {
        //Open the File
        StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
    
        //Write out the numbers 1 to 10 on the same line.
        for(x=0; x < 10; x++)
        {
        sw.Write(x);
        }
    
        //close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. Dal menu Debug scegliere Avvia per compilare ed eseguire l'applicazione. Questo codice crea un file denominato Test1.txt nell'unità C. Aprire Test1.txt in un editor di testo, ad esempio Blocco note. Test1.txt contiene una singola riga di testo: 0123456789.

Elenco completo del codice per la lettura di un file di testo

//Read a Text File
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            String line;
            try
            {
                //Pass the file path and file name to the StreamReader constructor
                StreamReader sr = new StreamReader("C:\\Sample.txt");
                //Read the first line of text
                line = sr.ReadLine();
                //Continue to read until you reach end of file
                while (line != null)
                {
                    //write the line to console window
                    Console.WriteLine(line);
                    //Read the next line
                    line = sr.ReadLine();
                }
                //close the file
                sr.Close();
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Elenco completo del codice per la scrittura di un file di testo (versione 1)

//Write a text file - Version-1
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Test.txt");
                //Write a line of text
                sw.WriteLine("Hello World!!");
                //Write a second line of text
                sw.WriteLine("From the StreamWriter class");
                //Close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Elenco completo del codice per la scrittura di un file di testo (versione 2)

//Write a text file - Version 2
using System;
using System.IO;
using System.Text;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Int64 x;
            try
            {
                //Open the File
                StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
                //Writeout the numbers 1 to 10 on the same line.
                for(x=0; x < 10; x++)
                {
                    sw.Write(x);
                }
                //close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Risoluzione dei problemi

Per tutte le modifiche di file, è consigliabile eseguire il wrapping del codice all'interno di un blocco try-catch-finally per gestire errori ed eccezioni. In particolare, si possono rilasciare gli handle per il file nel blocco finale in modo che il file non venga bloccato per un periodo indefinito. Alcuni errori possibili riguardano un file inesistente o un file già in uso.